// ==UserScript==
// @name ast explorer助手
// @namespace https://github.com/CC11001100/ast-explorer-helper
// @version 0.3.0
// @description 用于分析ast时辅助提高效率,支持复制和右键菜单,以及元素高亮
// @author CC11001100
// @match https://astexplorer.net/
// @grant none
// @license MIT
// @supportURL https://github.com/CC11001100/ast-explorer-helper/issues
// @homepageURL https://github.com/CC11001100/ast-explorer-helper
// ==/UserScript==
// /**
// * _ ____ _____ _____ _ _ _ _
// * / \ / ___|_ _| | ____|_ ___ __ | | ___ _ __ ___ _ __| | | | ___| |_ __ ___ _ __
// * / _ \ \___ \ | | | _| \ \/ / '_ \| |/ _ \| '__/ _ \ '__| |_| |/ _ \ | '_ \ / _ \ '__|
// * / ___ \ ___) || | | |___ > <| |_) | | (_) | | | __/ | | _ | __/ | |_) | __/ |
// */_/ \_\____/ |_| |_____/_/\_\ .__/|_|\___/|_| \___|_| |_| |_|\___|_| .__/ \___|_|
// * |_| |_|
// *
// * ast-explorer-helper v0.3.0 - 用于分析ast时辅助提高效率,支持复制和右键菜单,以及元素高亮
// *
// */
/*
* 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/).
*/
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ 18:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ collectSettingsFromForm: () => (/* reexport safe */ _settings_tab_component__WEBPACK_IMPORTED_MODULE_0__.collectSettingsFromForm),\n/* harmony export */ createSettingsTabContent: () => (/* reexport safe */ _settings_tab_component__WEBPACK_IMPORTED_MODULE_0__.createSettingsTabContent),\n/* harmony export */ getSettingsTabStyles: () => (/* reexport safe */ _settings_tab_component__WEBPACK_IMPORTED_MODULE_0__.getSettingsTabStyles)\n/* harmony export */ });\n/* harmony import */ var _settings_tab_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(974);\n/**\n * 设置标签页组件 - 入口文件\n */\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztHQUVHO0FBTStCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYXN0LWV4cGxvcmVyLWhlbHBlci8uL3NyYy91aS9zZXR0aW5ncy10YWIvaW5kZXgudHM/NzMxOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOiuvue9ruagh+etvumhtee7hOS7tiAtIOWFpeWPo+aWh+S7tlxuICovXG5cbmV4cG9ydCB7IFxuICAgIGNvbGxlY3RTZXR0aW5nc0Zyb21Gb3JtLFxuICAgIGdldFNldHRpbmdzVGFiU3R5bGVzLFxuICAgIGNyZWF0ZVNldHRpbmdzVGFiQ29udGVudFxufSBmcm9tICcuL3NldHRpbmdzLXRhYi5jb21wb25lbnQnOyAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///18\n");
/***/ }),
/***/ 55:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createModalTemplate: () => (/* binding */ createModalTemplate),\n/* harmony export */ createSettingsButtonTemplate: () => (/* binding */ createSettingsButtonTemplate),\n/* harmony export */ createToastTemplate: () => (/* binding */ createToastTemplate)\n/* harmony export */ });\n/**\n * 设置UI组件 - 模板文件\n */\n/**\n * 创建设置按钮模板\n * @returns 设置按钮HTML\n */\nfunction createSettingsButtonTemplate() {\n return `\n <div class=\"settings-button-inner\">\n <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path class=\"gear-path\" d=\"M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path class=\"gear-path\" d=\"M19.4 15C19.2669 15.3016 19.2272 15.6362 19.286 15.9606C19.3448 16.285 19.4995 16.5843 19.73 16.82L19.79 16.88C19.976 17.0657 20.1235 17.2863 20.2241 17.5291C20.3248 17.7719 20.3766 18.0322 20.3766 18.295C20.3766 18.5578 20.3248 18.8181 20.2241 19.0609C20.1235 19.3037 19.976 19.5243 19.79 19.71C19.6043 19.896 19.3837 20.0435 19.1409 20.1441C18.8981 20.2448 18.6378 20.2966 18.375 20.2966C18.1122 20.2966 17.8519 20.2448 17.6091 20.1441C17.3663 20.0435 17.1457 19.896 16.96 19.71L16.9 19.65C16.6643 19.4195 16.365 19.2648 16.0406 19.206C15.7162 19.1472 15.3816 19.1869 15.08 19.32C14.7842 19.4468 14.532 19.6572 14.3543 19.9255C14.1766 20.1938 14.0813 20.5082 14.08 20.83V21C14.08 21.5304 13.8693 22.0391 13.4942 22.4142C13.1191 22.7893 12.6104 23 12.08 23C11.5496 23 11.0409 22.7893 10.6658 22.4142C10.2907 22.0391 10.08 21.5304 10.08 21V20.91C10.0723 20.579 9.96512 20.258 9.77251 19.9887C9.5799 19.7194 9.31074 19.5143 9 19.4C8.69838 19.2669 8.36381 19.2272 8.03941 19.286C7.71502 19.3448 7.41568 19.4995 7.18 19.73L7.12 19.79C6.93425 19.976 6.71368 20.1235 6.47088 20.2241C6.22808 20.3248 5.96783 20.3766 5.705 20.3766C5.44217 20.3766 5.18192 20.3248 4.93912 20.2241C4.69632 20.1235 4.47575 19.976 4.29 19.79C4.10405 19.6043 3.95653 19.3837 3.85588 19.1409C3.75523 18.8981 3.70343 18.6378 3.70343 18.375C3.70343 18.1122 3.75523 17.8519 3.85588 17.6091C3.95653 17.3663 4.10405 17.1457 4.29 16.96L4.35 16.9C4.58054 16.6643 4.73519 16.365 4.794 16.0406C4.85282 15.7162 4.81312 15.3816 4.68 15.08C4.55324 14.7842 4.34276 14.532 4.07447 14.3543C3.80618 14.1766 3.49179 14.0813 3.17 14.08H3C2.46957 14.08 1.96086 13.8693 1.58579 13.4942C1.21071 13.1191 1 12.6104 1 12.08C1 11.5496 1.21071 11.0409 1.58579 10.6658C1.96086 10.2907 2.46957 10.08 3 10.08H3.09C3.42099 10.0723 3.742 9.96512 4.0113 9.77251C4.28059 9.5799 4.48572 9.31074 4.6 9C4.73312 8.69838 4.77282 8.36381 4.714 8.03941C4.65519 7.71502 4.50054 7.41568 4.27 7.18L4.21 7.12C4.02405 6.93425 3.87653 6.71368 3.77588 6.47088C3.67523 6.22808 3.62343 5.96783 3.62343 5.705C3.62343 5.44217 3.67523 5.18192 3.77588 4.93912C3.87653 4.69632 4.02405 4.47575 4.21 4.29C4.39575 4.10405 4.61632 3.95653 4.85912 3.85588C5.10192 3.75523 5.36217 3.70343 5.625 3.70343C5.88783 3.70343 6.14808 3.75523 6.39088 3.85588C6.63368 3.95653 6.85425 4.10405 7.04 4.29L7.1 4.35C7.33568 4.58054 7.63502 4.73519 7.95941 4.794C8.28381 4.85282 8.61838 4.81312 8.92 4.68H9C9.29577 4.55324 9.54802 4.34276 9.72569 4.07447C9.90337 3.80618 9.99872 3.49179 10 3.17V3C10 2.46957 10.2107 1.96086 10.5858 1.58579C10.9609 1.21071 11.4696 1 12 1C12.5304 1 13.0391 1.21071 13.4142 1.58579C13.7893 1.96086 14 2.46957 14 3V3.09C14.0013 3.41179 14.0966 3.72618 14.2743 3.99447C14.452 4.26276 14.7042 4.47324 15 4.6C15.3016 4.73312 15.6362 4.77282 15.9606 4.714C16.285 4.65519 16.5843 4.50054 16.82 4.27L16.88 4.21C17.0657 4.02405 17.2863 3.87653 17.5291 3.77588C17.7719 3.67523 18.0322 3.62343 18.295 3.62343C18.5578 3.62343 18.8181 3.67523 19.0609 3.77588C19.3037 3.87653 19.5243 4.02405 19.71 4.21C19.896 4.39575 20.0435 4.61632 20.1441 4.85912C20.2448 5.10192 20.2966 5.36217 20.2966 5.625C20.2966 5.88783 20.2448 6.14808 20.1441 6.39088C20.0435 6.63368 19.896 6.85425 19.71 7.04L19.65 7.1C19.4195 7.33568 19.2648 7.63502 19.206 7.95941C19.1472 8.28381 19.1869 8.61838 19.32 8.92V9C19.4468 9.29577 19.6572 9.54802 19.9255 9.72569C20.1938 9.90337 20.5082 9.99872 20.83 10H21C21.5304 10 22.0391 10.2107 22.4142 10.5858C22.7893 10.9609 23 11.4696 23 12C23 12.5304 22.7893 13.0391 22.4142 13.4142C22.0391 13.7893 21.5304 14 21 14H20.91C20.5882 14.0013 20.2738 14.0966 20.0055 14.2743C19.7372 14.452 19.5268 14.7042 19.4 15Z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <div class=\"ripple-effect\"></div>\n </div>\n `;\n}\n/**\n * 创建模态框模板\n * @returns 模态框HTML结构\n */\nfunction createModalTemplate() {\n return `\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h3>AST Explorer 助手</h3>\n <button class=\"close-button\">×</button>\n </div>\n <!-- 标签页导航将在这里插入 -->\n <div class=\"modal-body\">\n <!-- 标签页内容将在这里插入 -->\n </div>\n <div class=\"modal-footer\">\n <button id=\"save-settings\" class=\"only-settings-tab\">保存设置</button>\n </div>\n </div>\n `;\n}\n/**\n * 创建成功提示模板\n * @returns 提示HTML\n */\nfunction createToastTemplate() {\n return `\n <div class=\"settings-toast\">设置已保存</div>\n `;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0dBRUc7QUFFSDs7O0dBR0c7QUFDSSxTQUFTLDRCQUE0QjtJQUN4QyxPQUFPOzs7Ozs7OztLQVFOLENBQUM7QUFDTixDQUFDO0FBRUQ7OztHQUdHO0FBQ0ksU0FBUyxtQkFBbUI7SUFDL0IsT0FBTzs7Ozs7Ozs7Ozs7Ozs7S0FjTixDQUFDO0FBQ04sQ0FBQztBQUVEOzs7R0FHRztBQUNJLFNBQVMsbUJBQW1CO0lBQy9CLE9BQU87O0tBRU4sQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9hc3QtZXhwbG9yZXItaGVscGVyLy4vc3JjL3VpL3NldHRpbmdzLXVpL3NldHRpbmdzLXVpLnRlbXBsYXRlLnRzP2E4OWQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDorr7nva5VSee7hOS7tiAtIOaooeadv+aWh+S7tlxuICovXG5cbi8qKlxuICog5Yib5bu66K6+572u5oyJ6ZKu5qih5p2/XG4gKiBAcmV0dXJucyDorr7nva7mjInpkq5IVE1MXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZXR0aW5nc0J1dHRvblRlbXBsYXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInNldHRpbmdzLWJ1dHRvbi1pbm5lclwiPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMjJcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJnZWFyLXBhdGhcIiBkPVwiTTEyIDE1QzEzLjY1NjkgMTUgMTUgMTMuNjU2OSAxNSAxMkMxNSAxMC4zNDMxIDEzLjY1NjkgOSAxMiA5QzEwLjM0MzEgOSA5IDEwLjM0MzEgOSAxMkM5IDEzLjY1NjkgMTAuMzQzMSAxNSAxMiAxNVpcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJnZWFyLXBhdGhcIiBkPVwiTTE5LjQgMTVDMTkuMjY2OSAxNS4zMDE2IDE5LjIyNzIgMTUuNjM2MiAxOS4yODYgMTUuOTYwNkMxOS4zNDQ4IDE2LjI4NSAxOS40OTk1IDE2LjU4NDMgMTkuNzMgMTYuODJMMTkuNzkgMTYuODhDMTkuOTc2IDE3LjA2NTcgMjAuMTIzNSAxNy4yODYzIDIwLjIyNDEgMTcuNTI5MUMyMC4zMjQ4IDE3Ljc3MTkgMjAuMzc2NiAxOC4wMzIyIDIwLjM3NjYgMTguMjk1QzIwLjM3NjYgMTguNTU3OCAyMC4zMjQ4IDE4LjgxODEgMjAuMjI0MSAxOS4wNjA5QzIwLjEyMzUgMTkuMzAzNyAxOS45NzYgMTkuNTI0MyAxOS43OSAxOS43MUMxOS42MDQzIDE5Ljg5NiAxOS4zODM3IDIwLjA0MzUgMTkuMTQwOSAyMC4xNDQxQzE4Ljg5ODEgMjAuMjQ0OCAxOC42Mzc4IDIwLjI5NjYgMTguMzc1IDIwLjI5NjZDMTguMTEyMiAyMC4yOTY2IDE3Ljg1MTkgMjAuMjQ0OCAxNy42MDkxIDIwLjE0NDFDMTcuMzY2MyAyMC4wNDM1IDE3LjE0NTcgMTkuODk2IDE2Ljk2IDE5LjcxTDE2LjkgMTkuNjVDMTYuNjY0MyAxOS40MTk1IDE2LjM2NSAxOS4yNjQ4IDE2LjA0MDYgMTkuMjA2QzE1LjcxNjIgMTkuMTQ3MiAxNS4zODE2IDE5LjE4NjkgMTUuMDggMTkuMzJDMTQuNzg0MiAxOS40NDY4IDE0LjUzMiAxOS42NTcyIDE0LjM1NDMgMTkuOTI1NUMxNC4xNzY2IDIwLjE5MzggMTQuMDgxMyAyMC41MDgyIDE0LjA4IDIwLjgzVjIxQzE0LjA4IDIxLjUzMDQgMTMuODY5MyAyMi4wMzkxIDEzLjQ5NDIgMjIuNDE0MkMxMy4xMTkxIDIyLjc4OTMgMTIuNjEwNCAyMyAxMi4wOCAyM0MxMS41NDk2IDIzIDExLjA0MDkgMjIuNzg5MyAxMC42NjU4IDIyLjQxNDJDMTAuMjkwNyAyMi4wMzkxIDEwLjA4IDIxLjUzMDQgMTAuMDggMjFWMjAuOTFDMTAuMDcyMyAyMC41NzkgOS45NjUxMiAyMC4yNTggOS43NzI1MSAxOS45ODg3QzkuNTc5OSAxOS43MTk0IDkuMzEwNzQgMTkuNTE0MyA5IDE5LjRDOC42OTgzOCAxOS4yNjY5IDguMzYzODEgMTkuMjI3MiA4LjAzOTQxIDE5LjI4NkM3LjcxNTAyIDE5LjM0NDggNy40MTU2OCAxOS40OTk1IDcuMTggMTkuNzNMNy4xMiAxOS43OUM2LjkzNDI1IDE5Ljk3NiA2LjcxMzY4IDIwLjEyMzUgNi40NzA4OCAyMC4yMjQxQzYuMjI4MDggMjAuMzI0OCA1Ljk2NzgzIDIwLjM3NjYgNS43MDUgMjAuMzc2NkM1LjQ0MjE3IDIwLjM3NjYgNS4xODE5MiAyMC4zMjQ4IDQuOTM5MTIgMjAuMjI0MUM0LjY5NjMyIDIwLjEyMzUgNC40NzU3NSAxOS45NzYgNC4yOSAxOS43OUM0LjEwNDA1IDE5LjYwNDMgMy45NTY1MyAxOS4zODM3IDMuODU1ODggMTkuMTQwOUMzLjc1NTIzIDE4Ljg5ODEgMy43MDM0MyAxOC42Mzc4IDMuNzAzNDMgMTguMzc1QzMuNzAzNDMgMTguMTEyMiAzLjc1NTIzIDE3Ljg1MTkgMy44NTU4OCAxNy42MDkxQzMuOTU2NTMgMTcuMzY2MyA0LjEwNDA1IDE3LjE0NTcgNC4yOSAxNi45Nkw0LjM1IDE2LjlDNC41ODA1NCAxNi42NjQzIDQuNzM1MTkgMTYuMzY1IDQuNzk0IDE2LjA0MDZDNC44NTI4MiAxNS43MTYyIDQuODEzMTIgMTUuMzgxNiA0LjY4IDE1LjA4QzQuNTUzMjQgMTQuNzg0MiA0LjM0Mjc2IDE0LjUzMiA0LjA3NDQ3IDE0LjM1NDNDMy44MDYxOCAxNC4xNzY2IDMuNDkxNzkgMTQuMDgxMyAzLjE3IDE0LjA4SDNDMi40Njk1NyAxNC4wOCAxLjk2MDg2IDEzLjg2OTMgMS41ODU3OSAxMy40OTQyQzEuMjEwNzEgMTMuMTE5MSAxIDEyLjYxMDQgMSAxMi4wOEMxIDExLjU0OTYgMS4yMTA3MSAxMS4wNDA5IDEuNTg1NzkgMTAuNjY1OEMxLjk2MDg2IDEwLjI5MDcgMi40Njk1NyAxMC4wOCAzIDEwLjA4SDMuMDlDMy40MjA5OSAxMC4wNzIzIDMuNzQyIDkuOTY1MTIgNC4wMTEzIDkuNzcyNTFDNC4yODA1OSA5LjU3OTkgNC40ODU3MiA5LjMxMDc0IDQuNiA5QzQuNzMzMTIgOC42OTgzOCA0Ljc3MjgyIDguMzYzODEgNC43MTQgOC4wMzk0MUM0LjY1NTE5IDcuNzE1MDIgNC41MDA1NCA3LjQxNTY4IDQuMjcgNy4xOEw0LjIxIDcuMTJDNC4wMjQwNSA2LjkzNDI1IDMuODc2NTMgNi43MTM2OCAzLjc3NTg4IDYuNDcwODhDMy42NzUyMyA2LjIyODA4IDMuNjIzNDMgNS45Njc4MyAzLjYyMzQzIDUuNzA1QzMuNjIzNDMgNS40NDIxNyAzLjY3NTIzIDUuMTgxOTIgMy43NzU4OCA0LjkzOTEyQzMuODc2NTMgNC42OTYzMiA0LjAyNDA1IDQuNDc1NzUgNC4yMSA0LjI5QzQuMzk1NzUgNC4xMDQwNSA0LjYxNjMyIDMuOTU2NTMgNC44NTkxMiAzLjg1NTg4QzUuMTAxOTIgMy43NTUyMyA1LjM2MjE3IDMuNzAzNDMgNS42MjUgMy43MDM0M0M1Ljg4NzgzIDMuNzAzNDMgNi4xNDgwOCAzLjc1NTIzIDYuMzkwODggMy44NTU4OEM2LjYzMzY4IDMuOTU2NTMgNi44NTQyNSA0LjEwNDA1IDcuMDQgNC4yOUw3LjEgNC4zNUM3LjMzNTY4IDQuNTgwNTQgNy42MzUwMiA0LjczNTE5IDcuOTU5NDEgNC43OTRDOC4yODM4MSA0Ljg1MjgyIDguNjE4MzggNC44MTMxMiA4LjkyIDQuNjhIOUM5LjI5NTc3IDQuNTUzMjQgOS41NDgwMiA0LjM0Mjc2IDkuNzI1NjkgNC4wNzQ0N0M5LjkwMzM3IDMuODA2MTggOS45OTg3MiAzLjQ5MTc5IDEwIDMuMTdWM0MxMCAyLjQ2OTU3IDEwLjIxMDcgMS45NjA4NiAxMC41ODU4IDEuNTg1NzlDMTAuOTYwOSAxLjIxMDcxIDExLjQ2OTYgMSAxMiAxQzEyLjUzMDQgMSAxMy4wMzkxIDEuMjEwNzEgMTMuNDE0MiAxLjU4NTc5QzEzLjc4OTMgMS45NjA4NiAxNCAyLjQ2OTU3IDE0IDNWMy4wOUMxNC4wMDEzIDMuNDExNzkgMTQuMDk2NiAzLjcyNjE4IDE0LjI3NDMgMy45OTQ0N0MxNC40NTIgNC4yNjI3NiAxNC43MDQyIDQuNDczMjQgMTUgNC42QzE1LjMwMTYgNC43MzMxMiAxNS42MzYyIDQuNzcyODIgMTUuOTYwNiA0LjcxNEMxNi4yODUgNC42NTUxOSAxNi41ODQzIDQuNTAwNTQgMTYuODIgNC4yN0wxNi44OCA0LjIxQzE3LjA2NTcgNC4wMjQwNSAxNy4yODYzIDMuODc2NTMgMTcuNTI5MSAzLjc3NTg4QzE3Ljc3MTkgMy42NzUyMyAxOC4wMzIyIDMuNjIzNDMgMTguMjk1IDMuNjIzNDNDMTguNTU3OCAzLjYyMzQzIDE4LjgxODEgMy42NzUyMyAxOS4wNjA5IDMuNzc1ODhDMTkuMzAzNyAzLjg3NjUzIDE5LjUyNDMgNC4wMjQwNSAxOS43MSA0LjIxQzE5Ljg5NiA0LjM5NTc1IDIwLjA0MzUgNC42MTYzMiAyMC4xNDQxIDQuODU5MTJDMjAuMjQ0OCA1LjEwMTkyIDIwLjI5NjYgNS4zNjIxNyAyMC4yOTY2IDUuNjI1QzIwLjI5NjYgNS44ODc4MyAyMC4yNDQ4IDYuMTQ4MDggMjAuMTQ0MSA2LjM5MDg4QzIwLjA0MzUgNi42MzM2OCAxOS44OTYgNi44NTQyNSAxOS43MSA3LjA0TDE5LjY1IDcuMUMxOS40MTk1IDcuMzM1NjggMTkuMjY0OCA3LjYzNTAyIDE5LjIwNiA3Ljk1OTQxQzE5LjE0NzIgOC4yODM4MSAxOS4xODY5IDguNjE4MzggMTkuMzIgOC45MlY5QzE5LjQ0NjggOS4yOTU3NyAxOS42NTcyIDkuNTQ4MDIgMTkuOTI1NSA5LjcyNTY5QzIwLjE5MzggOS45MDMzNyAyMC41MDgyIDkuOTk4NzIgMjAuODMgMTBIMjFDMjEuNTMwNCAxMCAyMi4wMzkxIDEwLjIxMDcgMjIuNDE0MiAxMC41ODU4QzIyLjc4OTMgMTAuOTYwOSAyMyAxMS40Njk2IDIzIDEyQzIzIDEyLjUzMDQgMjIuNzg5MyAxMy4wMzkxIDIyLjQxNDIgMTMuNDE0MkMyMi4wMzkxIDEzLjc4OTMgMjEuNTMwNCAxNCAyMSAxNEgyMC45MUMyMC41ODgyIDE0LjAwMTMgMjAuMjczOCAxNC4wOTY2IDIwLjAwNTUgMTQuMjc0M0MxOS43MzcyIDE0LjQ1MiAxOS41MjY4IDE0LjcwNDIgMTkuNCAxNVpcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaXBwbGUtZWZmZWN0XCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGA7XG59XG5cbi8qKlxuICog5Yib5bu65qih5oCB5qGG5qih5p2/XG4gKiBAcmV0dXJucyDmqKHmgIHmoYZIVE1M57uT5p6EXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2RhbFRlbXBsYXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8aDM+QVNUIEV4cGxvcmVyIOWKqeaJizwvaDM+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNsb3NlLWJ1dHRvblwiPiZ0aW1lczs8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSDmoIfnrb7pobXlr7zoiKrlsIblnKjov5nph4zmj5LlhaUgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICAgICAgICAgIDwhLS0g5qCH562+6aG15YaF5a655bCG5Zyo6L+Z6YeM5o+S5YWlIC0tPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cInNhdmUtc2V0dGluZ3NcIiBjbGFzcz1cIm9ubHktc2V0dGluZ3MtdGFiXCI+5L+d5a2Y6K6+572uPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYDtcbn1cblxuLyoqXG4gKiDliJvlu7rmiJDlip/mj5DnpLrmqKHmnb9cbiAqIEByZXR1cm5zIOaPkOekukhUTUxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRvYXN0VGVtcGxhdGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFxuICAgICAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3MtdG9hc3RcIj7orr7nva7lt7Lkv53lrZg8L2Rpdj5cbiAgICBgO1xufSAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///55\n");
/***/ }),
/***/ 126:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createAboutTabContent: () => (/* reexport safe */ _about_tab_template__WEBPACK_IMPORTED_MODULE_2__.createAboutTabContent),\n/* harmony export */ getAboutTabStyles: () => (/* reexport safe */ _about_tab_styles__WEBPACK_IMPORTED_MODULE_1__.getAboutTabStyles),\n/* harmony export */ getRepoStatsFromCache: () => (/* reexport safe */ _about_tab_template__WEBPACK_IMPORTED_MODULE_2__.getRepoStatsFromCache)\n/* harmony export */ });\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(610);\n/* harmony import */ var _about_tab_styles__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(379);\n/* harmony import */ var _about_tab_template__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(707);\n/**\n * 关于标签页组件 - 逻辑文件\n */\n\n// 导出公共API\n\n\n_logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('已加载关于标签页组件');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI2LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztHQUVHO0FBRW1DO0FBSXRDLFVBQVU7QUFDNkM7QUFDNkI7QUFFcEYsMkNBQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9hc3QtZXhwbG9yZXItaGVscGVyLy4vc3JjL3VpL2Fib3V0LXRhYi9hYm91dC10YWIuY29tcG9uZW50LnRzP2JiYWYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDlhbPkuo7moIfnrb7pobXnu4Tku7YgLSDpgLvovpHmlofku7ZcbiAqL1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi9sb2dnZXInO1xuaW1wb3J0IHsgZ2V0QWJvdXRUYWJTdHlsZXMgfSBmcm9tICcuL2Fib3V0LXRhYi5zdHlsZXMnO1xuaW1wb3J0IHsgY3JlYXRlQWJvdXRUYWJDb250ZW50LCBnZXRSZXBvU3RhdHNGcm9tQ2FjaGUgfSBmcm9tICcuL2Fib3V0LXRhYi50ZW1wbGF0ZSc7XG5cbi8vIOWvvOWHuuWFrOWFsUFQSVxuZXhwb3J0IHsgZ2V0QWJvdXRUYWJTdHlsZXMgfSBmcm9tICcuL2Fib3V0LXRhYi5zdHlsZXMnO1xuZXhwb3J0IHsgY3JlYXRlQWJvdXRUYWJDb250ZW50LCBnZXRSZXBvU3RhdHNGcm9tQ2FjaGUgfSBmcm9tICcuL2Fib3V0LXRhYi50ZW1wbGF0ZSc7XG5cbmxvZ2dlci5kZWJ1Zygn5bey5Yqg6L295YWz5LqO5qCH562+6aG157uE5Lu2Jyk7ICJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///126\n");
/***/ }),
/***/ 135:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getModalStyles: () => (/* binding */ getModalStyles),\n/* harmony export */ getSettingsButtonStyles: () => (/* binding */ getSettingsButtonStyles),\n/* harmony export */ getToastStyles: () => (/* binding */ getToastStyles)\n/* harmony export */ });\n/**\n * 设置UI组件 - 样式文件\n */\n/**\n * 获取设置按钮的样式\n * @returns 按钮CSS样式\n */\nfunction getSettingsButtonStyles() {\n return `\n #ast-settings-button .settings-button-inner {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n background: linear-gradient(145deg, #ffffff, #f0f0f0);\n box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.1),\n -5px -5px 10px rgba(255, 255, 255, 0.8);\n color: #4a90e2;\n transition: all 0.3s ease;\n overflow: hidden;\n }\n \n #ast-settings-button:hover .settings-button-inner {\n box-shadow: 4px 4px 8px rgba(0, 0, 0, 0.15),\n -4px -4px 8px rgba(255, 255, 255, 0.9);\n color: #2563eb;\n }\n \n #ast-settings-button:active .settings-button-inner {\n background: linear-gradient(135deg, #e6e6e6, #ffffff);\n box-shadow: inset 2px 2px 5px rgba(0, 0, 0, 0.1),\n inset -2px -2px 5px rgba(255, 255, 255, 0.8);\n }\n \n #ast-settings-button .gear-path {\n transform-origin: center;\n transition: transform 0.5s ease;\n }\n \n #ast-settings-button:hover .gear-path {\n animation: rotate-gear 3s linear infinite;\n }\n \n @keyframes rotate-gear {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n \n /* 涟漪效果 */\n #ast-settings-button .ripple-effect {\n position: absolute;\n background: rgba(255, 255, 255, 0.7);\n border-radius: 50%;\n transform: scale(0);\n opacity: 0;\n pointer-events: none;\n width: 100%;\n height: 100%;\n }\n \n #ast-settings-button .ripple-effect.active {\n animation: ripple 0.6s ease-out;\n }\n \n @keyframes ripple {\n 0% {\n transform: scale(0);\n opacity: 0.5;\n }\n 100% {\n transform: scale(2);\n opacity: 0;\n }\n }\n `;\n}\n/**\n * 获取模态框的样式\n * @returns 模态框CSS样式\n */\nfunction getModalStyles() {\n return `\n #ast-settings-modal .modal-content {\n background-color: #fff;\n border-radius: 8px;\n width: 900px;\n max-width: 90%;\n box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);\n overflow: hidden;\n transform: translateY(20px);\n transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);\n opacity: 0;\n }\n \n #ast-settings-modal.visible .modal-content {\n transform: translateY(0);\n opacity: 1;\n }\n \n #ast-settings-modal .modal-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid #eee;\n background: linear-gradient(to right, #4a90e2, #63b3ed);\n }\n \n #ast-settings-modal .modal-header h3 {\n margin: 0;\n font-size: 18px;\n color: white;\n font-weight: 500;\n }\n \n #ast-settings-modal .close-button {\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n padding: 0;\n line-height: 1;\n color: white;\n opacity: 0.8;\n transition: opacity 0.2s, transform 0.2s;\n }\n \n #ast-settings-modal .close-button:hover {\n opacity: 1;\n transform: scale(1.1);\n }\n \n #ast-settings-modal .modal-body {\n padding: 20px;\n max-height: 60vh;\n overflow-y: auto;\n }\n \n #ast-settings-modal .modal-footer {\n padding: 16px 20px;\n border-top: 1px solid #eee;\n text-align: right;\n background-color: #f9fafb;\n }\n \n #ast-settings-modal button#save-settings {\n background-color: #4a90e2;\n color: white;\n border: none;\n padding: 8px 20px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n transition: all 0.2s;\n }\n \n #ast-settings-modal button#save-settings:hover {\n background-color: #3b7fce;\n transform: translateY(-1px);\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n }\n \n #ast-settings-modal button#save-settings:active {\n transform: translateY(1px);\n box-shadow: none;\n }\n `;\n}\n/**\n * 获取成功提示的样式\n * @returns 提示框CSS样式\n */\nfunction getToastStyles() {\n return `\n .settings-toast {\n position: fixed;\n bottom: 30px;\n left: 50%;\n transform: translateX(-50%) translateY(20px);\n background-color: #4CAF50;\n color: white;\n padding: 10px 20px;\n border-radius: 6px;\n z-index: 10001;\n font-size: 14px;\n font-weight: 500;\n box-shadow: 0 3px 10px rgba(0, 0, 0, 0.15);\n opacity: 0;\n transition: opacity 0.3s ease, transform 0.3s ease;\n }\n `;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM1LmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztHQUVHO0FBRUg7OztHQUdHO0FBQ0ksU0FBUyx1QkFBdUI7SUFDbkMsT0FBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXlFTixDQUFDO0FBQ04sQ0FBQztBQUVEOzs7R0FHRztBQUNJLFNBQVMsY0FBYztJQUMxQixPQUFPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXNGTixDQUFDO0FBQ04sQ0FBQztBQUVEOzs7R0FHRztBQUNJLFNBQVMsY0FBYztJQUMxQixPQUFPOzs7Ozs7Ozs7Ozs7Ozs7OztLQWlCTixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL2FzdC1leHBsb3Jlci1oZWxwZXIvLi9zcmMvdWkvc2V0dGluZ3MtdWkvc2V0dGluZ3MtdWkuc3R5bGVzLnRzP2FlOWEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDorr7nva5VSee7hOS7tiAtIOagt+W8j+aWh+S7tlxuICovXG5cbi8qKlxuICog6I635Y+W6K6+572u5oyJ6ZKu55qE5qC35byPXG4gKiBAcmV0dXJucyDmjInpkq5DU1PmoLflvI9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNldHRpbmdzQnV0dG9uU3R5bGVzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1idXR0b24gLnNldHRpbmdzLWJ1dHRvbi1pbm5lciB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTQ1ZGVnLCAjZmZmZmZmLCAjZjBmMGYwKTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDVweCA1cHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAtNXB4IC01cHggMTBweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG4gICAgICAgICAgICBjb2xvcjogIzRhOTBlMjtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLWJ1dHRvbjpob3ZlciAuc2V0dGluZ3MtYnV0dG9uLWlubmVyIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDRweCA0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xNSksXG4gICAgICAgICAgICAgICAgICAgICAgICAtNHB4IC00cHggOHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgICAgICAgICAgIGNvbG9yOiAjMjU2M2ViO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLWJ1dHRvbjphY3RpdmUgLnNldHRpbmdzLWJ1dHRvbi1pbm5lciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZTZlNmU2LCAjZmZmZmZmKTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDJweCAycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc2V0IC0ycHggLTJweCA1cHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLWJ1dHRvbiAuZ2Vhci1wYXRoIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjVzIGVhc2U7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtYnV0dG9uOmhvdmVyIC5nZWFyLXBhdGgge1xuICAgICAgICAgICAgYW5pbWF0aW9uOiByb3RhdGUtZ2VhciAzcyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIEBrZXlmcmFtZXMgcm90YXRlLWdlYXIge1xuICAgICAgICAgICAgMCUge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgMTAwJSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLyog5raf5ryq5pWI5p6cICovXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtYnV0dG9uIC5yaXBwbGUtZWZmZWN0IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1idXR0b24gLnJpcHBsZS1lZmZlY3QuYWN0aXZlIHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogcmlwcGxlIDAuNnMgZWFzZS1vdXQ7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIEBrZXlmcmFtZXMgcmlwcGxlIHtcbiAgICAgICAgICAgIDAlIHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDEwMCUge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMik7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIGA7XG59XG5cbi8qKlxuICog6I635Y+W5qih5oCB5qGG55qE5qC35byPXG4gKiBAcmV0dXJucyDmqKHmgIHmoYZDU1PmoLflvI9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1vZGFsU3R5bGVzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAubW9kYWwtY29udGVudCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICAgICAgd2lkdGg6IDkwMHB4O1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMjVweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGN1YmljLWJlemllcigwLjM0LCAxLjU2LCAwLjY0LCAxKTtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwudmlzaWJsZSAubW9kYWwtY29udGVudCB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5tb2RhbC1oZWFkZXIge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBwYWRkaW5nOiAxNnB4IDIwcHg7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgIzRhOTBlMiwgIzYzYjNlZCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLm1vZGFsLWhlYWRlciBoMyB7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5jbG9zZS1idXR0b24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuODtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycywgdHJhbnNmb3JtIDAuMnM7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLmNsb3NlLWJ1dHRvbjpob3ZlciB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5tb2RhbC1ib2R5IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiA2MHZoO1xuICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAubW9kYWwtZm9vdGVyIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE2cHggMjBweDtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVlO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmYWZiO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIGJ1dHRvbiNzYXZlLXNldHRpbmdzIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0YTkwZTI7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICBwYWRkaW5nOiA4cHggMjBweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCBidXR0b24jc2F2ZS1zZXR0aW5nczpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2I3ZmNlO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCBidXR0b24jc2F2ZS1zZXR0aW5nczphY3RpdmUge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDFweCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICB9XG4gICAgYDtcbn1cblxuLyoqXG4gKiDojrflj5bmiJDlip/mj5DnpLrnmoTmoLflvI9cbiAqIEByZXR1cm5zIOaPkOekuuahhkNTU+agt+W8j1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9hc3RTdHlsZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFxuICAgICAgICAuc2V0dGluZ3MtdG9hc3Qge1xuICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICAgICAgYm90dG9tOiAzMHB4O1xuICAgICAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoMjBweCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNENBRjUwO1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgcGFkZGluZzogMTBweCAyMHB4O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICAgICAgei1pbmRleDogMTAwMDE7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAzcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlLCB0cmFuc2Zvcm0gMC4zcyBlYXNlO1xuICAgICAgICB9XG4gICAgYDtcbn0gIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///135\n");
/***/ }),
/***/ 361:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LogLevel: () => (/* binding */ LogLevel),\n/* harmony export */ Logger: () => (/* binding */ Logger),\n/* harmony export */ logger: () => (/* binding */ logger)\n/* harmony export */ });\n/**\n * 日志服务模块\n * 提供带颜色的日志输出功能,带有插件前缀\n */\n// 日志级别枚举\nvar LogLevel;\n(function (LogLevel) {\n LogLevel[LogLevel[\"DEBUG\"] = 0] = \"DEBUG\";\n LogLevel[LogLevel[\"INFO\"] = 1] = \"INFO\";\n LogLevel[LogLevel[\"WARN\"] = 2] = \"WARN\";\n LogLevel[LogLevel[\"ERROR\"] = 3] = \"ERROR\";\n})(LogLevel || (LogLevel = {}));\n// 默认配置\nconst DEFAULT_CONFIG = {\n level: LogLevel.DEBUG,\n prefix: '🧩 AST Explorer助手',\n showTime: true,\n enabled: true\n};\n// 检查URL参数是否启用调试模式\nfunction checkDebugMode() {\n try {\n const urlParams = new URLSearchParams(window.location.search);\n return urlParams.has('ast_debug') || urlParams.has('debug');\n }\n catch (e) {\n return false;\n }\n}\n// 配置初始日志级别\nfunction getInitialLogLevel() {\n // 默认使用DEBUG级别\n return LogLevel.DEBUG;\n}\n/**\n * 日志服务类\n */\nclass Logger {\n /**\n * 创建一个日志服务实例\n * @param config 可选的日志配置\n */\n constructor(config) {\n this.config = Object.assign(Object.assign({}, DEFAULT_CONFIG), config);\n // 输出初始状态日志\n if (this.config.level === LogLevel.DEBUG) {\n console.debug('🔍 调试模式已启用 - 日志级别:', this.config.level);\n }\n }\n /**\n * 更新日志配置\n * @param config 新配置\n */\n updateConfig(config) {\n const oldLevel = this.config.level;\n this.config = Object.assign(Object.assign({}, this.config), config);\n if (oldLevel !== this.config.level) {\n if (this.config.level === LogLevel.DEBUG) {\n this.debug('🔍 调试模式已启用');\n }\n else if (oldLevel === LogLevel.DEBUG) {\n this.info('🔍 调试模式已关闭');\n }\n }\n }\n /**\n * 启用调试级别日志\n */\n enableDebug() {\n if (this.config.level !== LogLevel.DEBUG) {\n this.updateConfig({ level: LogLevel.DEBUG });\n }\n }\n /**\n * 禁用调试级别日志\n */\n disableDebug() {\n if (this.config.level === LogLevel.DEBUG) {\n this.updateConfig({ level: LogLevel.INFO });\n }\n }\n /**\n * 格式化日志消息\n * @param level 日志级别\n * @param args 日志参数\n * @returns 格式化后的消息\n */\n formatMessage(level, args) {\n const formattedArgs = [...args];\n // 添加时间前缀\n let prefix = this.config.prefix ? `${this.config.prefix}` : '';\n // 添加时间\n if (this.config.showTime) {\n const now = new Date();\n const timeStr = `${now.getHours().toString().padStart(2, '0')}:${now.getMinutes().toString().padStart(2, '0')}:${now.getSeconds().toString().padStart(2, '0')}.${now.getMilliseconds().toString().padStart(3, '0')}`;\n prefix = `${prefix} [${timeStr}]`;\n }\n // 添加日志级别\n prefix = `${prefix} [${level}]`;\n // 如果第一个参数是字符串,拼接前缀,否则作为单独的参数\n if (typeof formattedArgs[0] === 'string') {\n formattedArgs[0] = `${prefix} ${formattedArgs[0]}`;\n }\n else {\n formattedArgs.unshift(prefix);\n }\n return formattedArgs;\n }\n /**\n * 调试日志\n * @param args 日志参数\n */\n debug(...args) {\n if (!this.config.enabled || this.config.level > LogLevel.DEBUG) {\n return;\n }\n const formattedArgs = this.formatMessage('DEBUG', args);\n console.debug('%c' + formattedArgs[0], 'color: #9e9e9e; font-weight: bold;', ...formattedArgs.slice(1));\n }\n /**\n * 信息日志\n * @param args 日志参数\n */\n info(...args) {\n if (!this.config.enabled || this.config.level > LogLevel.INFO)\n return;\n const formattedArgs = this.formatMessage('INFO', args);\n console.log('%c' + formattedArgs[0], 'color: #2196f3; font-weight: bold;', ...formattedArgs.slice(1));\n }\n /**\n * 警告日志\n * @param args 日志参数\n */\n warn(...args) {\n if (!this.config.enabled || this.config.level > LogLevel.WARN)\n return;\n const formattedArgs = this.formatMessage('WARN', args);\n console.warn('%c' + formattedArgs[0], 'color: #ff9800; font-weight: bold;', ...formattedArgs.slice(1));\n }\n /**\n * 错误日志\n * @param args 日志参数\n */\n error(...args) {\n if (!this.config.enabled || this.config.level > LogLevel.ERROR)\n return;\n const formattedArgs = this.formatMessage('ERROR', args);\n console.error('%c' + formattedArgs[0], 'color: #f44336; font-weight: bold;', ...formattedArgs.slice(1));\n }\n /**\n * 输出分组日志的开始\n * @param title 分组标题\n * @param collapsed 是否默认折叠\n */\n group(title, collapsed = false) {\n if (!this.config.enabled)\n return;\n const formattedTitle = this.formatMessage('GROUP', [title])[0];\n if (collapsed) {\n console.groupCollapsed('%c' + formattedTitle, 'color: #4caf50; font-weight: bold;');\n }\n else {\n console.group('%c' + formattedTitle, 'color: #4caf50; font-weight: bold;');\n }\n }\n /**\n * 输出折叠的分组日志开始\n * @param title 分组标题\n */\n groupCollapsed(title) {\n this.group(title, true);\n }\n /**\n * 结束当前分组\n */\n groupEnd() {\n if (!this.config.enabled)\n return;\n console.groupEnd();\n }\n /**\n * 输出表格数据\n * @param data 表格数据\n */\n table(data) {\n if (!this.config.enabled)\n return;\n console.table(data);\n }\n}\n// 创建默认日志实例\nconst logger = new Logger();\nlogger.debug('热编译测试 - ' + new Date().toISOString());\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QWMsQ0FBQyxLQUFhO1FBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUNqQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxJQUFTO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztZQUFFLE9BQU87UUFDakMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0NBQ0o7QUFFRCxXQUFXO0FBQ0osTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztBQUVuQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9hc3QtZXhwbG9yZXItaGVscGVyLy4vc3JjL2xvZ2dlci9sb2dnZXIuc2VydmljZS50cz84MTA2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5pel5b+X5pyN5Yqh5qih5Z2XXG4gKiDmj5DkvpvluKbpopzoibLnmoTml6Xlv5fovpPlh7rlip/og73vvIzluKbmnInmj5Lku7bliY3nvIBcbiAqL1xuXG4vLyDml6Xlv5fnuqfliKvmnprkuL5cbmV4cG9ydCBlbnVtIExvZ0xldmVsIHtcbiAgICBERUJVRyA9IDAsXG4gICAgSU5GTyA9IDEsXG4gICAgV0FSTiA9IDIsXG4gICAgRVJST1IgPSAzXG59XG5cbi8vIOaXpeW/l+mFjee9ruaOpeWPo1xuZXhwb3J0IGludGVyZmFjZSBMb2dnZXJDb25maWcge1xuICAgIGxldmVsOiBMb2dMZXZlbDsgICAgICAgIC8vIOaXpeW/l+e6p+WIq1xuICAgIHByZWZpeDogc3RyaW5nOyAgICAgICAgIC8vIOaXpeW/l+WJjee8gFxuICAgIHNob3dUaW1lOiBib29sZWFuOyAgICAgIC8vIOaYr+WQpuaYvuekuuaXtumXtFxuICAgIGVuYWJsZWQ6IGJvb2xlYW47ICAgICAgIC8vIOaYr+WQpuWQr+eUqOaXpeW/l1xufVxuXG4vLyDpu5jorqTphY3nva5cbmNvbnN0IERFRkFVTFRfQ09ORklHOiBMb2dnZXJDb25maWcgPSB7XG4gICAgbGV2ZWw6IExvZ0xldmVsLkRFQlVHLFxuICAgIHByZWZpeDogJ/Cfp6kgQVNUIEV4cGxvcmVy5Yqp5omLJyxcbiAgICBzaG93VGltZTogdHJ1ZSxcbiAgICBlbmFibGVkOiB0cnVlXG59O1xuXG4vLyDmo4Dmn6VVUkzlj4LmlbDmmK/lkKblkK/nlKjosIPor5XmqKHlvI9cbmZ1bmN0aW9uIGNoZWNrRGVidWdNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgICAgIHJldHVybiB1cmxQYXJhbXMuaGFzKCdhc3RfZGVidWcnKSB8fCB1cmxQYXJhbXMuaGFzKCdkZWJ1ZycpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuLy8g6YWN572u5Yid5aeL5pel5b+X57qn5YirXG5mdW5jdGlvbiBnZXRJbml0aWFsTG9nTGV2ZWwoKTogTG9nTGV2ZWwge1xuICAgIC8vIOm7mOiupOS9v+eUqERFQlVH57qn5YirXG4gICAgcmV0dXJuIExvZ0xldmVsLkRFQlVHO1xufVxuXG4vKipcbiAqIOaXpeW/l+acjeWKoeexu1xuICovXG5leHBvcnQgY2xhc3MgTG9nZ2VyIHtcbiAgICBwcml2YXRlIGNvbmZpZzogTG9nZ2VyQ29uZmlnO1xuXG4gICAgLyoqXG4gICAgICog5Yib5bu65LiA5Liq5pel5b+X5pyN5Yqh5a6e5L6LXG4gICAgICogQHBhcmFtIGNvbmZpZyDlj6/pgInnmoTml6Xlv5fphY3nva5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihjb25maWc/OiBQYXJ0aWFsPExvZ2dlckNvbmZpZz4pIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSB7IFxuICAgICAgICAgICAgLi4uREVGQVVMVF9DT05GSUcsXG4gICAgICAgICAgICAuLi5jb25maWcgXG4gICAgICAgIH07XG4gICAgICAgIFxuICAgICAgICAvLyDovpPlh7rliJ3lp4vnirbmgIHml6Xlv5dcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmxldmVsID09PSBMb2dMZXZlbC5ERUJVRykge1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1Zygn8J+UjSDosIPor5XmqKHlvI/lt7LlkK/nlKggLSDml6Xlv5fnuqfliKs6JywgdGhpcy5jb25maWcubGV2ZWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5pu05paw5pel5b+X6YWN572uXG4gICAgICogQHBhcmFtIGNvbmZpZyDmlrDphY3nva5cbiAgICAgKi9cbiAgICB1cGRhdGVDb25maWcoY29uZmlnOiBQYXJ0aWFsPExvZ2dlckNvbmZpZz4pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb2xkTGV2ZWwgPSB0aGlzLmNvbmZpZy5sZXZlbDtcbiAgICAgICAgdGhpcy5jb25maWcgPSB7IC4uLnRoaXMuY29uZmlnLCAuLi5jb25maWcgfTtcbiAgICAgICAgXG4gICAgICAgIGlmIChvbGRMZXZlbCAhPT0gdGhpcy5jb25maWcubGV2ZWwpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5sZXZlbCA9PT0gTG9nTGV2ZWwuREVCVUcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlYnVnKCfwn5SNIOiwg+ivleaooeW8j+W3suWQr+eUqCcpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChvbGRMZXZlbCA9PT0gTG9nTGV2ZWwuREVCVUcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluZm8oJ/CflI0g6LCD6K+V5qih5byP5bey5YWz6ZetJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLyoqXG4gICAgICog5ZCv55So6LCD6K+V57qn5Yir5pel5b+XXG4gICAgICovXG4gICAgZW5hYmxlRGVidWcoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5sZXZlbCAhPT0gTG9nTGV2ZWwuREVCVUcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ29uZmlnKHsgbGV2ZWw6IExvZ0xldmVsLkRFQlVHIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8qKlxuICAgICAqIOemgeeUqOiwg+ivlee6p+WIq+aXpeW/l1xuICAgICAqL1xuICAgIGRpc2FibGVEZWJ1ZygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmxldmVsID09PSBMb2dMZXZlbC5ERUJVRykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDb25maWcoeyBsZXZlbDogTG9nTGV2ZWwuSU5GTyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOagvOW8j+WMluaXpeW/l+a2iOaBr1xuICAgICAqIEBwYXJhbSBsZXZlbCDml6Xlv5fnuqfliKtcbiAgICAgKiBAcGFyYW0gYXJncyDml6Xlv5flj4LmlbBcbiAgICAgKiBAcmV0dXJucyDmoLzlvI/ljJblkI7nmoTmtojmga9cbiAgICAgKi9cbiAgICBwcml2YXRlIGZvcm1hdE1lc3NhZ2UobGV2ZWw6IHN0cmluZywgYXJnczogYW55W10pOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZEFyZ3MgPSBbLi4uYXJnc107XG4gICAgICAgIFxuICAgICAgICAvLyDmt7vliqDml7bpl7TliY3nvIBcbiAgICAgICAgbGV0IHByZWZpeCA9IHRoaXMuY29uZmlnLnByZWZpeCA/IGAke3RoaXMuY29uZmlnLnByZWZpeH1gIDogJyc7XG4gICAgICAgIFxuICAgICAgICAvLyDmt7vliqDml7bpl7RcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLnNob3dUaW1lKSB7XG4gICAgICAgICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgY29uc3QgdGltZVN0ciA9IGAke25vdy5nZXRIb3VycygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX06JHtub3cuZ2V0TWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX06JHtub3cuZ2V0U2Vjb25kcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX0uJHtub3cuZ2V0TWlsbGlzZWNvbmRzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgzLCAnMCcpfWA7XG4gICAgICAgICAgICBwcmVmaXggPSBgJHtwcmVmaXh9IFske3RpbWVTdHJ9XWA7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIOa3u+WKoOaXpeW/l+e6p+WIq1xuICAgICAgICBwcmVmaXggPSBgJHtwcmVmaXh9IFske2xldmVsfV1gO1xuICAgICAgICBcbiAgICAgICAgLy8g5aaC5p6c56ys5LiA5Liq5Y+C5pWw5piv5a2X56ym5Liy77yM5ou85o6l5YmN57yA77yM5ZCm5YiZ5L2c5Li65Y2V54us55qE5Y+C5pWwXG4gICAgICAgIGlmICh0eXBlb2YgZm9ybWF0dGVkQXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZEFyZ3NbMF0gPSBgJHtwcmVmaXh9ICR7Zm9ybWF0dGVkQXJnc1swXX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybWF0dGVkQXJncy51bnNoaWZ0KHByZWZpeCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWRBcmdzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiwg+ivleaXpeW/l1xuICAgICAqIEBwYXJhbSBhcmdzIOaXpeW/l+WPguaVsFxuICAgICAqL1xuICAgIGRlYnVnKC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWcuZW5hYmxlZCB8fCB0aGlzLmNvbmZpZy5sZXZlbCA+IExvZ0xldmVsLkRFQlVHKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybWF0dGVkQXJncyA9IHRoaXMuZm9ybWF0TWVzc2FnZSgnREVCVUcnLCBhcmdzKTtcbiAgICAgICAgY29uc29sZS5kZWJ1ZygnJWMnICsgZm9ybWF0dGVkQXJnc1swXSwgJ2NvbG9yOiAjOWU5ZTllOyBmb250LXdlaWdodDogYm9sZDsnLCAuLi5mb3JtYXR0ZWRBcmdzLnNsaWNlKDEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDkv6Hmga/ml6Xlv5dcbiAgICAgKiBAcGFyYW0gYXJncyDml6Xlv5flj4LmlbBcbiAgICAgKi9cbiAgICBpbmZvKC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWcuZW5hYmxlZCB8fCB0aGlzLmNvbmZpZy5sZXZlbCA+IExvZ0xldmVsLklORk8pIHJldHVybjtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkQXJncyA9IHRoaXMuZm9ybWF0TWVzc2FnZSgnSU5GTycsIGFyZ3MpO1xuICAgICAgICBjb25zb2xlLmxvZygnJWMnICsgZm9ybWF0dGVkQXJnc1swXSwgJ2NvbG9yOiAjMjE5NmYzOyBmb250LXdlaWdodDogYm9sZDsnLCAuLi5mb3JtYXR0ZWRBcmdzLnNsaWNlKDEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorablkYrml6Xlv5dcbiAgICAgKiBAcGFyYW0gYXJncyDml6Xlv5flj4LmlbBcbiAgICAgKi9cbiAgICB3YXJuKC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWcuZW5hYmxlZCB8fCB0aGlzLmNvbmZpZy5sZXZlbCA+IExvZ0xldmVsLldBUk4pIHJldHVybjtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkQXJncyA9IHRoaXMuZm9ybWF0TWVzc2FnZSgnV0FSTicsIGFyZ3MpO1xuICAgICAgICBjb25zb2xlLndhcm4oJyVjJyArIGZvcm1hdHRlZEFyZ3NbMF0sICdjb2xvcjogI2ZmOTgwMDsgZm9udC13ZWlnaHQ6IGJvbGQ7JywgLi4uZm9ybWF0dGVkQXJncy5zbGljZSgxKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6ZSZ6K+v5pel5b+XXG4gICAgICogQHBhcmFtIGFyZ3Mg5pel5b+X5Y+C5pWwXG4gICAgICovXG4gICAgZXJyb3IoLi4uYXJnczogYW55W10pOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZy5lbmFibGVkIHx8IHRoaXMuY29uZmlnLmxldmVsID4gTG9nTGV2ZWwuRVJST1IpIHJldHVybjtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkQXJncyA9IHRoaXMuZm9ybWF0TWVzc2FnZSgnRVJST1InLCBhcmdzKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignJWMnICsgZm9ybWF0dGVkQXJnc1swXSwgJ2NvbG9yOiAjZjQ0MzM2OyBmb250LXdlaWdodDogYm9sZDsnLCAuLi5mb3JtYXR0ZWRBcmdzLnNsaWNlKDEpKTtcbiAgICB9XG4gICAgXG4gICAgLyoqXG4gICAgICog6L6T5Ye65YiG57uE5pel5b+X55qE5byA5aeLXG4gICAgICogQHBhcmFtIHRpdGxlIOWIhue7hOagh+mimFxuICAgICAqIEBwYXJhbSBjb2xsYXBzZWQg5piv5ZCm6buY6K6k5oqY5Y+gXG4gICAgICovXG4gICAgZ3JvdXAodGl0bGU6IHN0cmluZywgY29sbGFwc2VkOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZy5lbmFibGVkKSByZXR1cm47XG4gICAgICAgIFxuICAgICAgICBjb25zdCBmb3JtYXR0ZWRUaXRsZSA9IHRoaXMuZm9ybWF0TWVzc2FnZSgnR1JPVVAnLCBbdGl0bGVdKVswXTtcbiAgICAgICAgaWYgKGNvbGxhcHNlZCkge1xuICAgICAgICAgICAgY29uc29sZS5ncm91cENvbGxhcHNlZCgnJWMnICsgZm9ybWF0dGVkVGl0bGUsICdjb2xvcjogIzRjYWY1MDsgZm9udC13ZWlnaHQ6IGJvbGQ7Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmdyb3VwKCclYycgKyBmb3JtYXR0ZWRUaXRsZSwgJ2NvbG9yOiAjNGNhZjUwOyBmb250LXdlaWdodDogYm9sZDsnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvKipcbiAgICAgKiDovpPlh7rmipjlj6DnmoTliIbnu4Tml6Xlv5flvIDlp4tcbiAgICAgKiBAcGFyYW0gdGl0bGUg5YiG57uE5qCH6aKYXG4gICAgICovXG4gICAgZ3JvdXBDb2xsYXBzZWQodGl0bGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmdyb3VwKHRpdGxlLCB0cnVlKTtcbiAgICB9XG4gICAgXG4gICAgLyoqXG4gICAgICog57uT5p2f5b2T5YmN5YiG57uEXG4gICAgICovXG4gICAgZ3JvdXBFbmQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWcuZW5hYmxlZCkgcmV0dXJuO1xuICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XG4gICAgfVxuICAgIFxuICAgIC8qKlxuICAgICAqIOi+k+WHuuihqOagvOaVsOaNrlxuICAgICAqIEBwYXJhbSBkYXRhIOihqOagvOaVsOaNrlxuICAgICAqL1xuICAgIHRhYmxlKGRhdGE6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlnLmVuYWJsZWQpIHJldHVybjtcbiAgICAgICAgY29uc29sZS50YWJsZShkYXRhKTtcbiAgICB9XG59XG5cbi8vIOWIm+W7uum7mOiupOaXpeW/l+WunuS+i1xuZXhwb3J0IGNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoKTtcblxubG9nZ2VyLmRlYnVnKCfng63nvJbor5HmtYvor5UgLSAnICsgbmV3IERhdGUoKS50b0lTT1N0cmluZygpKTsgIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///361\n");
/***/ }),
/***/ 379:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getAboutTabStyles: () => (/* binding */ getAboutTabStyles)\n/* harmony export */ });\n/**\n * 关于标签页组件 - 样式文件\n */\n/**\n * 获取关于标签页的样式\n * @returns 关于标签页的CSS样式\n */\nfunction getAboutTabStyles() {\n return `\n /* 关于标签页的整体样式 */\n #about-tab {\n padding: 20px;\n overflow-y: auto;\n height: 100%;\n background-color: #f8f9fa;\n }\n \n #ast-settings-modal .about-content {\n max-width: 700px;\n margin: 0 auto;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n }\n \n #ast-settings-modal .about-content p {\n margin: 10px 0;\n color: #555;\n line-height: 1.5;\n }\n \n #ast-settings-modal .about-content a {\n color: #4a90e2;\n text-decoration: none;\n font-weight: 500;\n }\n \n #ast-settings-modal .about-content a:hover {\n text-decoration: underline;\n }\n \n /* 统一卡片基础样式 */\n #ast-settings-modal .repo-info-section, \n #ast-settings-modal .org-info-section, \n #ast-settings-modal .community-section {\n margin-bottom: 30px;\n }\n \n #ast-settings-modal .repo-card, \n #ast-settings-modal .org-card, \n #ast-settings-modal .community-card {\n background: linear-gradient(135deg, #ffffff, #f8f9fa);\n border-radius: 12px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.05);\n padding: 22px;\n max-width: 600px;\n margin: 0 auto;\n transition: transform 0.3s ease, box-shadow 0.3s ease;\n position: relative;\n overflow: hidden;\n }\n \n #ast-settings-modal .repo-card:hover, \n #ast-settings-modal .org-card:hover, \n #ast-settings-modal .community-card:hover {\n transform: translateY(-5px);\n box-shadow: 0 8px 30px rgba(0, 0, 0, 0.1);\n }\n \n /* 卡片顶部渐变条 */\n #ast-settings-modal .repo-card:before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: linear-gradient(90deg, #4a90e2, #6a3de8);\n border-radius: 3px 3px 0 0;\n }\n \n #ast-settings-modal .org-card:before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: linear-gradient(90deg, #f7df1e, #e34c26);\n border-radius: 3px 3px 0 0;\n }\n \n #ast-settings-modal .community-card:before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: linear-gradient(90deg, #25D366, #0088cc);\n border-radius: 3px 3px 0 0;\n }\n \n /* 统一卡片头部样式 */\n #ast-settings-modal .repo-header, \n #ast-settings-modal .org-header, \n #ast-settings-modal .community-header {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n margin-bottom: 15px;\n position: relative;\n border-bottom: none;\n padding: 0;\n }\n \n /* 图标/Logo统一样式 */\n #ast-settings-modal .repo-logo, \n #ast-settings-modal .community-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 60px;\n height: 60px;\n background: linear-gradient(135deg, #6e8efb, #a777e3);\n border-radius: 50%;\n margin-bottom: 15px;\n box-shadow: 0 3px 8px rgba(0, 0, 0, 0.1);\n color: white;\n transition: transform 0.3s ease;\n }\n \n #ast-settings-modal .repo-logo:hover, \n #ast-settings-modal .community-icon:hover {\n transform: rotate(10deg);\n }\n \n #ast-settings-modal .repo-logo svg, \n #ast-settings-modal .community-icon svg {\n width: 32px;\n height: 32px;\n filter: drop-shadow(0 2px 3px rgba(0, 0, 0, 0.1));\n }\n \n /* 组织Logo特殊样式 */\n #ast-settings-modal .org-logo {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n margin-bottom: 10px;\n }\n \n /* JSREI组织logo样式 */\n #ast-settings-modal .jsrei-logo {\n width: 64px;\n height: 64px;\n border: 1px solid #e0e0e0;\n border-radius: 10px;\n background-color: white;\n padding: 4px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.08);\n transition: transform 0.3s ease, box-shadow 0.3s ease;\n animation: float 5s ease-in-out infinite;\n }\n \n #ast-settings-modal .jsrei-logo:hover {\n border-color: #4a90e2;\n box-shadow: 0 4px 12px rgba(74, 144, 226, 0.2);\n transform: scale(1.05);\n }\n \n /* 徽章样式统一 */\n #ast-settings-modal .repo-badge, \n #ast-settings-modal .org-badge {\n display: inline-block;\n padding: 3px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n margin-top: 8px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n }\n \n #ast-settings-modal .repo-badge {\n background-color: #4a90e2;\n color: white;\n }\n \n #ast-settings-modal .org-badge {\n background-color: #4caf50;\n color: white;\n }\n \n /* 标题统一样式 */\n #ast-settings-modal .repo-header h4, \n #ast-settings-modal .org-header h4, \n #ast-settings-modal .community-header h4,\n #ast-settings-modal .section-title {\n margin: 10px 0 5px;\n font-size: 1.25rem;\n font-weight: 600;\n color: #333;\n }\n \n #ast-settings-modal .repo-header p, \n #ast-settings-modal .community-header p {\n margin: 5px 0 0;\n color: #666;\n font-size: 0.9rem;\n text-align: center;\n }\n \n /* 仓库统计相关样式 - 增强版 */\n #ast-settings-modal .repo-stats {\n margin: 15px auto;\n max-width: 500px;\n padding: 15px 0;\n background-color: transparent;\n }\n \n #ast-settings-modal .repo-link-wrapper {\n display: flex;\n justify-content: center;\n gap: 15px;\n margin-bottom: 15px;\n }\n \n #ast-settings-modal .repo-link, \n #ast-settings-modal .star-button {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n text-decoration: none;\n transition: all 0.2s ease;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05);\n }\n \n #ast-settings-modal .repo-link {\n background-color: #24292e;\n color: white !important;\n }\n \n #ast-settings-modal .repo-link:hover {\n background-color: #000;\n text-decoration: none !important;\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.08);\n }\n \n #ast-settings-modal .star-button {\n background-color: #f3f4f6;\n color: #24292e !important;\n border: 1px solid #d0d7de;\n }\n \n #ast-settings-modal .star-button:hover {\n background-color: #e6ebf1;\n text-decoration: none !important;\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.08);\n }\n \n #ast-settings-modal .github-icon, \n #ast-settings-modal .star-icon {\n margin-right: 6px;\n }\n \n /* 改进的统计数据项样式 */\n #ast-settings-modal .github-stats {\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n gap: 12px;\n margin-top: 20px;\n }\n \n #ast-settings-modal .stat-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 12px 8px;\n border-radius: 8px;\n min-width: 80px;\n text-decoration: none;\n position: relative;\n overflow: hidden;\n transition: all 0.3s ease;\n }\n \n /* 鼠标悬停效果 */\n #ast-settings-modal .stat-item:hover {\n transform: translateY(-3px);\n box-shadow: 0 4px 8px rgba(0,0,0,0.1);\n text-decoration: none !important;\n }\n \n /* 为每种类型的统计添加独特颜色 */\n #ast-settings-modal .star-stat {\n background-color: #fff8e1;\n color: #ff8f00 !important;\n border: 1px solid #ffe082;\n }\n \n #ast-settings-modal .star-stat:hover {\n background-color: #ffecb3;\n }\n \n #ast-settings-modal .star-stat .stat-icon {\n fill: #ff8f00;\n }\n \n #ast-settings-modal .fork-stat {\n background-color: #e8f5e9;\n color: #388e3c !important;\n border: 1px solid #c8e6c9;\n }\n \n #ast-settings-modal .fork-stat:hover {\n background-color: #c8e6c9;\n }\n \n #ast-settings-modal .fork-stat .stat-icon {\n fill: #388e3c;\n }\n \n #ast-settings-modal .issue-stat {\n background-color: #e3f2fd;\n color: #1976d2 !important;\n border: 1px solid #bbdefb;\n }\n \n #ast-settings-modal .issue-stat:hover {\n background-color: #bbdefb;\n }\n \n #ast-settings-modal .issue-stat .stat-icon {\n fill: #1976d2;\n }\n \n #ast-settings-modal .update-stat {\n background-color: #f3e5f5;\n color: #7b1fa2 !important;\n border: 1px solid #e1bee7;\n }\n \n #ast-settings-modal .update-stat:hover {\n background-color: #e1bee7;\n }\n \n #ast-settings-modal .update-stat .stat-icon {\n fill: #7b1fa2;\n }\n \n #ast-settings-modal .stat-icon {\n width: 20px;\n height: 20px;\n margin-bottom: 5px;\n }\n \n #ast-settings-modal .stat-item span {\n font-size: 16px;\n font-weight: 600;\n white-space: nowrap;\n }\n \n /* 新增:统计标签样式 */\n #ast-settings-modal .stat-label {\n font-size: 12px !important;\n font-weight: 400 !important;\n color: rgba(0, 0, 0, 0.6);\n margin-top: 3px;\n }\n\n /* 展示类似徽章的效果 */\n #ast-settings-modal .stat-item::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 3px;\n background: currentColor;\n opacity: 0.5;\n }\n \n /* 组织信息部分样式 */\n #ast-settings-modal .org-content {\n margin: 15px 0;\n }\n \n #ast-settings-modal .org-description {\n margin-bottom: 20px;\n }\n \n #ast-settings-modal .org-description p {\n text-align: center;\n }\n \n #ast-settings-modal .org-features {\n display: flex;\n justify-content: space-around;\n margin: 20px 0;\n flex-wrap: wrap;\n }\n \n #ast-settings-modal .feature-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 12px;\n min-width: 100px;\n border-radius: 8px;\n transition: all 0.2s ease;\n cursor: default;\n }\n \n #ast-settings-modal .feature-item:hover {\n background-color: #f0f4f9;\n transform: translateY(-3px);\n }\n \n #ast-settings-modal .feature-item:nth-child(1):hover .feature-icon {\n color: #ff9800;\n }\n \n #ast-settings-modal .feature-item:nth-child(2):hover .feature-icon {\n color: #4caf50;\n }\n \n #ast-settings-modal .feature-item:nth-child(3):hover .feature-icon {\n color: #2196f3;\n }\n \n #ast-settings-modal .feature-icon {\n margin-bottom: 8px;\n color: #555;\n transition: color 0.2s ease;\n }\n \n #ast-settings-modal .feature-text {\n font-size: 14px;\n font-weight: 500;\n }\n \n #ast-settings-modal .org-actions {\n margin-top: 20px;\n display: flex;\n justify-content: center;\n }\n \n /* GitHub按钮样式 */\n #ast-settings-modal .org-action-button {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background-color: #4a90e2;\n color: white;\n border-radius: 8px;\n font-weight: 500;\n transition: all 0.2s ease;\n box-shadow: 0 3px 10px rgba(74, 144, 226, 0.3);\n text-align: center;\n justify-content: center;\n min-width: 200px;\n }\n \n #ast-settings-modal .org-action-button .button-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n }\n \n #ast-settings-modal .org-action-button .button-text {\n display: inline-block;\n color: white;\n white-space: nowrap;\n }\n \n #ast-settings-modal .org-action-button.fixed-button {\n width: auto;\n min-width: 200px;\n max-width: 100%;\n overflow: visible;\n }\n \n #ast-settings-modal .org-action-button.fixed-button .github-icon {\n color: white;\n }\n \n #ast-settings-modal .org-action-button:hover {\n background-color: #3a80d2;\n box-shadow: 0 5px 15px rgba(74, 144, 226, 0.4);\n transform: translateY(-2px);\n text-decoration: none;\n }\n \n #ast-settings-modal .org-action-button:active {\n transform: translateY(0);\n box-shadow: 0 2px 5px rgba(74, 144, 226, 0.3);\n }\n \n /* 交流群样式 */\n @keyframes float {\n 0% {\n transform: translateY(0);\n }\n 50% {\n transform: translateY(-5px);\n }\n 100% {\n transform: translateY(0);\n }\n }\n \n #ast-settings-modal .community-section h4.section-title {\n display: inline-block;\n margin: 0 0 5px 0;\n font-size: 18px;\n color: #333;\n position: relative;\n }\n\n #ast-settings-modal .community-section h4.section-title:after {\n content: '';\n position: absolute;\n bottom: -4px;\n left: 25%;\n width: 50%;\n height: 2px;\n background: linear-gradient(90deg, #25D366, #0088cc);\n border-radius: 2px;\n }\n \n /* 二维码横向布局样式 - 增强版 */\n #ast-settings-modal .qr-code-container {\n display: flex;\n flex-direction: column;\n gap: 20px;\n margin-top: 15px;\n }\n \n #ast-settings-modal .qr-section {\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n gap: 20px;\n margin-bottom: 10px;\n }\n \n #ast-settings-modal .qr-section:first-child {\n position: relative;\n }\n \n #ast-settings-modal .qr-section-title {\n width: 100%;\n text-align: left;\n margin: 5px 0 15px 5px;\n font-weight: 500;\n color: #555;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n \n #ast-settings-modal .qr-section-title svg {\n width: 20px;\n height: 20px;\n }\n \n #ast-settings-modal .qr-section-title.wechat {\n color: #25D366;\n }\n \n #ast-settings-modal .qr-section-title.telegram {\n color: #0088cc;\n }\n \n #ast-settings-modal .qr-section-title.qq {\n color: #12B7F5;\n }\n \n #ast-settings-modal .qr-item {\n flex: 1;\n min-width: 200px;\n max-width: 260px;\n margin: 0 auto;\n padding: 15px;\n background-color: rgba(255, 255, 255, 0.6);\n border-radius: 10px;\n transition: all 0.3s ease;\n border: 1px solid #f0f0f0;\n text-align: center;\n }\n \n #ast-settings-modal .qr-item:hover {\n transform: translateY(-3px);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.08);\n background-color: white;\n border-color: #e0e0e0;\n }\n \n #ast-settings-modal .qr-item p {\n font-size: 14px;\n margin: 0 0 10px 0;\n color: #666;\n text-align: center;\n }\n \n #ast-settings-modal .qr-code {\n margin: 10px auto;\n display: block;\n padding: 8px;\n background-color: white;\n border: 1px solid #eee;\n border-radius: 8px;\n transition: all 0.3s ease;\n text-align: center;\n width: fit-content;\n }\n \n #ast-settings-modal .qr-item:hover .qr-code {\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);\n border-color: #ddd;\n }\n \n #ast-settings-modal .qr-code img {\n width: 150px;\n border-radius: 4px;\n transition: transform 0.3s, box-shadow 0.3s;\n }\n \n #ast-settings-modal .qr-code img:hover {\n transform: scale(1.05);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n }\n \n #ast-settings-modal .tg-link {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n margin: 5px 0;\n font-weight: 500;\n color: #0088cc;\n transition: all 0.2s;\n }\n \n #ast-settings-modal .tg-link:hover {\n color: #005580;\n transform: translateX(2px);\n }\n \n #ast-settings-modal .qq-link {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n margin: 5px 0;\n font-weight: 500;\n color: #12B7F5;\n transition: all 0.2s;\n }\n \n #ast-settings-modal .qq-link:hover {\n color: #0091D7;\n transform: translateX(2px);\n }\n `;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzc5LmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7R0FFRztBQUVIOzs7R0FHRztBQUNJLFNBQVMsaUJBQWlCO0lBQzdCLE9BQU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBeXBCTixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL2FzdC1leHBsb3Jlci1oZWxwZXIvLi9zcmMvdWkvYWJvdXQtdGFiL2Fib3V0LXRhYi5zdHlsZXMudHM/YTBiOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOWFs+S6juagh+etvumhtee7hOS7tiAtIOagt+W8j+aWh+S7tlxuICovXG5cbi8qKlxuICog6I635Y+W5YWz5LqO5qCH562+6aG155qE5qC35byPXG4gKiBAcmV0dXJucyDlhbPkuo7moIfnrb7pobXnmoRDU1PmoLflvI9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFib3V0VGFiU3R5bGVzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBcbiAgICAgICAgLyog5YWz5LqO5qCH562+6aG155qE5pW05L2T5qC35byPICovXG4gICAgICAgICNhYm91dC10YWIge1xuICAgICAgICAgICAgcGFkZGluZzogMjBweDtcbiAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5hYm91dC1jb250ZW50IHtcbiAgICAgICAgICAgIG1heC13aWR0aDogNzAwcHg7XG4gICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5hYm91dC1jb250ZW50IHAge1xuICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDA7XG4gICAgICAgICAgICBjb2xvcjogIzU1NTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLmFib3V0LWNvbnRlbnQgYSB7XG4gICAgICAgICAgICBjb2xvcjogIzRhOTBlMjtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLmFib3V0LWNvbnRlbnQgYTpob3ZlciB7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLyog57uf5LiA5Y2h54mH5Z+656GA5qC35byPICovXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLnJlcG8taW5mby1zZWN0aW9uLCBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAub3JnLWluZm8tc2VjdGlvbiwgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLmNvbW11bml0eS1zZWN0aW9uIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLnJlcG8tY2FyZCwgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLm9yZy1jYXJkLCBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuY29tbXVuaXR5LWNhcmQge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZmZmZmZiwgI2Y4ZjlmYSk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICAgICAgICAgICAgcGFkZGluZzogMjJweDtcbiAgICAgICAgICAgIG1heC13aWR0aDogNjAwcHg7XG4gICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2UsIGJveC1zaGFkb3cgMC4zcyBlYXNlO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAucmVwby1jYXJkOmhvdmVyLCBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAub3JnLWNhcmQ6aG92ZXIsIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5jb21tdW5pdHktY2FyZDpob3ZlciB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDhweCAzMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLyog5Y2h54mH6aG26YOo5riQ5Y+Y5p2hICovXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLnJlcG8tY2FyZDpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICBoZWlnaHQ6IDRweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgIzRhOTBlMiwgIzZhM2RlOCk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzcHggM3B4IDAgMDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAub3JnLWNhcmQ6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgaGVpZ2h0OiA0cHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICNmN2RmMWUsICNlMzRjMjYpO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4IDNweCAwIDA7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLmNvbW11bml0eS1jYXJkOmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIGhlaWdodDogNHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjMjVEMzY2LCAjMDA4OGNjKTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweCAzcHggMCAwO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvKiDnu5/kuIDljaHniYflpLTpg6jmoLflvI8gKi9cbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAucmVwby1oZWFkZXIsIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5vcmctaGVhZGVyLCBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuY29tbXVuaXR5LWhlYWRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLyog5Zu+5qCHL0xvZ2/nu5/kuIDmoLflvI8gKi9cbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAucmVwby1sb2dvLCBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuY29tbXVuaXR5LWljb24ge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIHdpZHRoOiA2MHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiA2MHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzZlOGVmYiwgI2E3NzdlMyk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAzcHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLnJlcG8tbG9nbzpob3ZlciwgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLmNvbW11bml0eS1pY29uOmhvdmVyIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDEwZGVnKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAucmVwby1sb2dvIHN2ZywgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLmNvbW11bml0eS1pY29uIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAycHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xKSk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8qIOe7hOe7h0xvZ2/nibnmrormoLflvI8gKi9cbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAub3JnLWxvZ28ge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvKiBKU1JFSee7hOe7h2xvZ2/moLflvI8gKi9cbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuanNyZWktbG9nbyB7XG4gICAgICAgICAgICB3aWR0aDogNjRweDtcbiAgICAgICAgICAgIGhlaWdodDogNjRweDtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMGUwZTA7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICAgICAgICBwYWRkaW5nOiA0cHg7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2UsIGJveC1zaGFkb3cgMC4zcyBlYXNlO1xuICAgICAgICAgICAgYW5pbWF0aW9uOiBmbG9hdCA1cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuanNyZWktbG9nbzpob3ZlciB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICM0YTkwZTI7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjIpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLyog5b6956ug5qC35byP57uf5LiAICovXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLnJlcG8tYmFkZ2UsIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5vcmctYmFkZ2Uge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgcGFkZGluZzogM3B4IDhweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgICAgICBmb250LXNpemU6IDExcHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLnJlcG8tYmFkZ2Uge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzRhOTBlMjtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAub3JnLWJhZGdlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0Y2FmNTA7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8qIOagh+mimOe7n+S4gOagt+W8jyAqL1xuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5yZXBvLWhlYWRlciBoNCwgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLm9yZy1oZWFkZXIgaDQsIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5jb21tdW5pdHktaGVhZGVyIGg0LFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5zZWN0aW9uLXRpdGxlIHtcbiAgICAgICAgICAgIG1hcmdpbjogMTBweCAwIDVweDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgICAgICBjb2xvcjogIzMzMztcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAucmVwby1oZWFkZXIgcCwgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLmNvbW11bml0eS1oZWFkZXIgcCB7XG4gICAgICAgICAgICBtYXJnaW46IDVweCAwIDA7XG4gICAgICAgICAgICBjb2xvcjogIzY2NjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvKiDku5PlupPnu5/orqHnm7jlhbPmoLflvI8gLSDlop7lvLrniYggKi9cbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAucmVwby1zdGF0cyB7XG4gICAgICAgICAgICBtYXJnaW46IDE1cHggYXV0bztcbiAgICAgICAgICAgIG1heC13aWR0aDogNTAwcHg7XG4gICAgICAgICAgICBwYWRkaW5nOiAxNXB4IDA7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAucmVwby1saW5rLXdyYXBwZXIge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgZ2FwOiAxNXB4O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAucmVwby1saW5rLCBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuc3Rhci1idXR0b24ge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgICAgICBwYWRkaW5nOiA4cHggMTZweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLnJlcG8tbGluayB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjQyOTJlO1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLnJlcG8tbGluazpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuc3Rhci1idXR0b24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjRmNjtcbiAgICAgICAgICAgIGNvbG9yOiAjMjQyOTJlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZDBkN2RlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5zdGFyLWJ1dHRvbjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlYmYxO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuZ2l0aHViLWljb24sIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5zdGFyLWljb24ge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8qIOaUuei/m+eahOe7n+iuoeaVsOaNrumhueagt+W8jyAqL1xuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5naXRodWItc3RhdHMge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuc3RhdC1pdGVtIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIHBhZGRpbmc6IDEycHggOHB4O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICAgICAgbWluLXdpZHRoOiA4MHB4O1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8qIOm8oOagh+aCrOWBnOaViOaenCAqL1xuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5zdGF0LWl0ZW06aG92ZXIge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggOHB4IHJnYmEoMCwwLDAsMC4xKTtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvKiDkuLrmr4/np43nsbvlnovnmoTnu5/orqHmt7vliqDni6znibnpopzoibIgKi9cbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuc3Rhci1zdGF0IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY4ZTE7XG4gICAgICAgICAgICBjb2xvcjogI2ZmOGYwMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2ZmZTA4MjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuc3Rhci1zdGF0OmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmVjYjM7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLnN0YXItc3RhdCAuc3RhdC1pY29uIHtcbiAgICAgICAgICAgIGZpbGw6ICNmZjhmMDA7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLmZvcmstc3RhdCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZThmNWU5O1xuICAgICAgICAgICAgY29sb3I6ICMzODhlM2MgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNjOGU2Yzk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLmZvcmstc3RhdDpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzhlNmM5O1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5mb3JrLXN0YXQgLnN0YXQtaWNvbiB7XG4gICAgICAgICAgICBmaWxsOiAjMzg4ZTNjO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5pc3N1ZS1zdGF0IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlM2YyZmQ7XG4gICAgICAgICAgICBjb2xvcjogIzE5NzZkMiAhaW1wb3J0YW50O1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2JiZGVmYjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuaXNzdWUtc3RhdDpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmJkZWZiO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5pc3N1ZS1zdGF0IC5zdGF0LWljb24ge1xuICAgICAgICAgICAgZmlsbDogIzE5NzZkMjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAudXBkYXRlLXN0YXQge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YzZTVmNTtcbiAgICAgICAgICAgIGNvbG9yOiAjN2IxZmEyICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZTFiZWU3O1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC51cGRhdGUtc3RhdDpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTFiZWU3O1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC51cGRhdGUtc3RhdCAuc3RhdC1pY29uIHtcbiAgICAgICAgICAgIGZpbGw6ICM3YjFmYTI7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLnN0YXQtaWNvbiB7XG4gICAgICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuc3RhdC1pdGVtIHNwYW4ge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8qIOaWsOWinu+8mue7n+iuoeagh+etvuagt+W8jyAqL1xuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5zdGF0LWxhYmVsIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC42KTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDNweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIOWxleekuuexu+S8vOW+veeroOeahOaViOaenCAqL1xuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5zdGF0LWl0ZW06OmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogM3B4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogY3VycmVudENvbG9yO1xuICAgICAgICAgICAgb3BhY2l0eTogMC41O1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvKiDnu4Tnu4fkv6Hmga/pg6jliIbmoLflvI8gKi9cbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAub3JnLWNvbnRlbnQge1xuICAgICAgICAgICAgbWFyZ2luOiAxNXB4IDA7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLm9yZy1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5vcmctZGVzY3JpcHRpb24gcCB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLm9yZy1mZWF0dXJlcyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gICAgICAgICAgICBtYXJnaW46IDIwcHggMDtcbiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuZmVhdHVyZS1pdGVtIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDEwMHB4O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuZmVhdHVyZS1pdGVtOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGY0Zjk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLmZlYXR1cmUtaXRlbTpudGgtY2hpbGQoMSk6aG92ZXIgLmZlYXR1cmUtaWNvbiB7XG4gICAgICAgICAgICBjb2xvcjogI2ZmOTgwMDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuZmVhdHVyZS1pdGVtOm50aC1jaGlsZCgyKTpob3ZlciAuZmVhdHVyZS1pY29uIHtcbiAgICAgICAgICAgIGNvbG9yOiAjNGNhZjUwO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5mZWF0dXJlLWl0ZW06bnRoLWNoaWxkKDMpOmhvdmVyIC5mZWF0dXJlLWljb24ge1xuICAgICAgICAgICAgY29sb3I6ICMyMTk2ZjM7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLmZlYXR1cmUtaWNvbiB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICAgICAgICBjb2xvcjogIzU1NTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnMgZWFzZTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuZmVhdHVyZS10ZXh0IHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLm9yZy1hY3Rpb25zIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8qIEdpdEh1YuaMiemSruagt+W8jyAqL1xuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5vcmctYWN0aW9uLWJ1dHRvbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMjBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0YTkwZTI7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgM3B4IDEwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMjAwcHg7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLm9yZy1hY3Rpb24tYnV0dG9uIC5idXR0b24taWNvbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5vcmctYWN0aW9uLWJ1dHRvbiAuYnV0dG9uLXRleHQge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAub3JnLWFjdGlvbi1idXR0b24uZml4ZWQtYnV0dG9uIHtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgbWluLXdpZHRoOiAyMDBweDtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5vcmctYWN0aW9uLWJ1dHRvbi5maXhlZC1idXR0b24gLmdpdGh1Yi1pY29uIHtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAub3JnLWFjdGlvbi1idXR0b246aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzNhODBkMjtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNXB4IDE1cHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuNCk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLm9yZy1hY3Rpb24tYnV0dG9uOmFjdGl2ZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDJweCA1cHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8qIOS6pOa1gee+pOagt+W8jyAqL1xuICAgICAgICBAa2V5ZnJhbWVzIGZsb2F0IHtcbiAgICAgICAgICAgIDAlIHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA1MCUge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDEwMCUge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuY29tbXVuaXR5LXNlY3Rpb24gaDQuc2VjdGlvbi10aXRsZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCA1cHggMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICAgIGNvbG9yOiAjMzMzO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuY29tbXVuaXR5LXNlY3Rpb24gaDQuc2VjdGlvbi10aXRsZTphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGJvdHRvbTogLTRweDtcbiAgICAgICAgICAgIGxlZnQ6IDI1JTtcbiAgICAgICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDJweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgIzI1RDM2NiwgIzAwODhjYyk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8qIOS6jOe7tOeggeaoquWQkeW4g+WxgOagt+W8jyAtIOWinuW8uueJiCAqL1xuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5xci1jb2RlLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGdhcDogMjBweDtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDE1cHg7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLnFyLXNlY3Rpb24ge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICAgICAgZ2FwOiAyMHB4O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAucXItc2VjdGlvbjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLnFyLXNlY3Rpb24tdGl0bGUge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgbWFyZ2luOiA1cHggMCAxNXB4IDVweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICBjb2xvcjogIzU1NTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLnFyLXNlY3Rpb24tdGl0bGUgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5xci1zZWN0aW9uLXRpdGxlLndlY2hhdCB7XG4gICAgICAgICAgICBjb2xvcjogIzI1RDM2NjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAucXItc2VjdGlvbi10aXRsZS50ZWxlZ3JhbSB7XG4gICAgICAgICAgICBjb2xvcjogIzAwODhjYztcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAucXItc2VjdGlvbi10aXRsZS5xcSB7XG4gICAgICAgICAgICBjb2xvcjogIzEyQjdGNTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAucXItaXRlbSB7XG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgbWluLXdpZHRoOiAyMDBweDtcbiAgICAgICAgICAgIG1heC13aWR0aDogMjYwcHg7XG4gICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNmMGYwZjA7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLnFyLWl0ZW06aG92ZXIge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCA1cHggMTVweCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICNlMGUwZTA7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLnFyLWl0ZW0gcCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCAxMHB4IDA7XG4gICAgICAgICAgICBjb2xvcjogIzY2NjtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAucXItY29kZSB7XG4gICAgICAgICAgICBtYXJnaW46IDEwcHggYXV0bztcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgcGFkZGluZzogOHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZWVlO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAucXItaXRlbTpob3ZlciAucXItY29kZSB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDVweCAxNXB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICNkZGQ7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLnFyLWNvZGUgaW1nIHtcbiAgICAgICAgICAgIHdpZHRoOiAxNTBweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzLCBib3gtc2hhZG93IDAuM3M7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLnFyLWNvZGUgaW1nOmhvdmVyIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAudGctbGluayB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBnYXA6IDVweDtcbiAgICAgICAgICAgIG1hcmdpbjogNXB4IDA7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgY29sb3I6ICMwMDg4Y2M7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAudGctbGluazpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogIzAwNTU4MDtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5xcS1saW5rIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGdhcDogNXB4O1xuICAgICAgICAgICAgbWFyZ2luOiA1cHggMDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICBjb2xvcjogIzEyQjdGNTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5xcS1saW5rOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiAjMDA5MUQ3O1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDJweCk7XG4gICAgICAgIH1cbiAgICBgO1xufSAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///379\n");
/***/ }),
/***/ 402:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _dom_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(494);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _dom_utils__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _dom_utils__WEBPACK_IMPORTED_MODULE_0__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/**\n * DOM 操作相关的工具函数\n */\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAyLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0dBRUc7QUFDeUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9hc3QtZXhwbG9yZXItaGVscGVyLy4vc3JjL2RvbS1oZWxwZXJzL2luZGV4LnRzP2M3ZWUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBET00g5pON5L2c55u45YWz55qE5bel5YW35Ye95pWwXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vZG9tLXV0aWxzJzsgIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///402\n");
/***/ }),
/***/ 458:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createModalTemplate: () => (/* reexport safe */ _settings_ui_template__WEBPACK_IMPORTED_MODULE_6__.createModalTemplate),\n/* harmony export */ createSettingsButtonTemplate: () => (/* reexport safe */ _settings_ui_template__WEBPACK_IMPORTED_MODULE_6__.createSettingsButtonTemplate),\n/* harmony export */ createSettingsUI: () => (/* binding */ createSettingsUI),\n/* harmony export */ createToastTemplate: () => (/* reexport safe */ _settings_ui_template__WEBPACK_IMPORTED_MODULE_6__.createToastTemplate),\n/* harmony export */ getModalStyles: () => (/* reexport safe */ _settings_ui_styles__WEBPACK_IMPORTED_MODULE_5__.getModalStyles),\n/* harmony export */ getSettingsButtonStyles: () => (/* reexport safe */ _settings_ui_styles__WEBPACK_IMPORTED_MODULE_5__.getSettingsButtonStyles),\n/* harmony export */ getToastStyles: () => (/* reexport safe */ _settings_ui_styles__WEBPACK_IMPORTED_MODULE_5__.getToastStyles)\n/* harmony export */ });\n/* harmony import */ var _settings_settings_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(663);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(610);\n/* harmony import */ var _tabs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(481);\n/* harmony import */ var _settings_tab__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18);\n/* harmony import */ var _about_tab__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(920);\n/* harmony import */ var _settings_ui_styles__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(135);\n/* harmony import */ var _settings_ui_template__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(55);\n/**\n * 设置UI组件 - 逻辑文件\n */\n\n\n\n\n\n\n\n// 导出公共API\n\n\n/**\n * 创建设置界面\n */\nfunction createSettingsUI() {\n // 添加设置按钮\n createSettingsButton();\n // 创建设置模态框\n createSettingsModal();\n // 监听设置变更事件\n document.addEventListener('ast-explorer-helper-settings-changed', handleSettingsChanged);\n}\n/**\n * 创建设置按钮\n */\nfunction createSettingsButton() {\n const button = document.createElement('div');\n button.id = 'ast-settings-button';\n // 使用模板生成按钮内容\n button.innerHTML = (0,_settings_ui_template__WEBPACK_IMPORTED_MODULE_6__.createSettingsButtonTemplate)();\n // 基础样式\n button.style.cssText = `\n position: fixed;\n bottom: 20px;\n right: 20px;\n width: 48px;\n height: 48px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 9999;\n transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);\n `;\n // 添加CSS样式\n const style = document.createElement('style');\n style.textContent = (0,_settings_ui_styles__WEBPACK_IMPORTED_MODULE_5__.getSettingsButtonStyles)();\n document.head.appendChild(style);\n // 悬停效果\n button.addEventListener('mouseenter', () => {\n button.style.transform = 'scale(1.1)';\n });\n button.addEventListener('mouseleave', () => {\n button.style.transform = 'scale(1)';\n });\n // 点击动画效果\n button.addEventListener('click', (e) => {\n const rect = button.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n const ripple = button.querySelector('.ripple-effect');\n if (ripple) {\n ripple.classList.remove('active');\n // 触发重排以便动画可以重新开始\n // 使用括号避免TypeScript错误\n (() => ripple.offsetWidth)();\n ripple.classList.add('active');\n }\n setTimeout(() => {\n showSettingsModal();\n _logger__WEBPACK_IMPORTED_MODULE_1__.logger.debug('设置按钮被点击,显示设置面板');\n }, 150);\n });\n document.body.appendChild(button);\n _logger__WEBPACK_IMPORTED_MODULE_1__.logger.debug('设置按钮已创建并添加到页面');\n}\n/**\n * 创建设置模态框\n */\nfunction createSettingsModal() {\n const modal = document.createElement('div');\n modal.id = 'ast-settings-modal';\n // 加载当前设置\n const settings = (0,_settings_settings_service__WEBPACK_IMPORTED_MODULE_0__.loadSettings)();\n console.log('🔍 创建设置模态框时加载的设置:', settings);\n console.log('🔍 hideToolbar当前值:', settings.hideToolbar);\n // 基本模态框结构\n modal.innerHTML = (0,_settings_ui_template__WEBPACK_IMPORTED_MODULE_6__.createModalTemplate)();\n // 获取内部元素\n const modalContent = modal.querySelector('.modal-content');\n const headerDiv = modalContent.querySelector('.modal-header');\n const bodyDiv = modalContent.querySelector('.modal-body');\n // 插入标签页导航\n headerDiv.insertAdjacentHTML('afterend', (0,_tabs__WEBPACK_IMPORTED_MODULE_2__.createTabsNavigation)());\n // 插入标签页内容\n bodyDiv.innerHTML = (0,_settings_tab__WEBPACK_IMPORTED_MODULE_3__.createSettingsTabContent)(settings) + (0,_about_tab__WEBPACK_IMPORTED_MODULE_4__.createAboutTabContent)();\n // 添加样式\n modal.style.cssText = `\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: 10000;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transition: opacity 0.3s ease;\n `;\n // 添加所有组件的样式\n const style = document.createElement('style');\n style.textContent = `\n ${(0,_settings_ui_styles__WEBPACK_IMPORTED_MODULE_5__.getModalStyles)()}\n ${(0,_tabs__WEBPACK_IMPORTED_MODULE_2__.getTabsStyles)()}\n ${(0,_settings_tab__WEBPACK_IMPORTED_MODULE_3__.getSettingsTabStyles)()}\n ${(0,_about_tab__WEBPACK_IMPORTED_MODULE_4__.getAboutTabStyles)()}\n ${(0,_settings_ui_styles__WEBPACK_IMPORTED_MODULE_5__.getToastStyles)()}\n `;\n document.head.appendChild(style);\n document.body.appendChild(modal);\n // 添加事件监听\n setupModalEvents();\n // 确认复选框状态与设置一致\n setTimeout(() => {\n const hideToolbarCheckbox = document.getElementById('hide-toolbar');\n if (hideToolbarCheckbox) {\n console.log('🔍 确认隐藏工具栏复选框状态:', hideToolbarCheckbox.checked);\n console.log('🔍 与设置中的值对比:', settings.hideToolbar);\n // 如果复选框状态与设置不一致,则更正\n if (hideToolbarCheckbox.checked !== settings.hideToolbar) {\n console.log('⚠️ 复选框状态与设置不一致,进行更正');\n hideToolbarCheckbox.checked = settings.hideToolbar;\n }\n }\n }, 100);\n _logger__WEBPACK_IMPORTED_MODULE_1__.logger.debug('设置模态框已创建并添加到页面');\n}\n/**\n * 设置模态框事件\n */\nfunction setupModalEvents() {\n const modal = document.getElementById('ast-settings-modal');\n if (!modal) {\n console.error('❌ 无法找到设置模态框元素');\n return;\n }\n // 关闭按钮 - 修正为.close-button选择器\n const closeBtn = modal.querySelector('.close-button');\n if (closeBtn) {\n closeBtn.addEventListener('click', () => {\n hideSettingsModal();\n });\n }\n else {\n console.warn('⚠️ 无法找到关闭按钮元素 (.close-button)');\n }\n // 保存按钮 - 修正为#save-settings选择器\n const saveBtn = modal.querySelector('#save-settings');\n if (saveBtn) {\n saveBtn.addEventListener('click', () => {\n saveSettingsFromModal();\n });\n }\n else {\n console.warn('⚠️ 无法找到保存按钮元素 (#save-settings)');\n }\n // 标签页切换\n setupTabsEvents();\n // 设置复选框实时响应\n setupRealTimeCheckboxEvents();\n // 点击模态框外部关闭\n modal.addEventListener('click', (e) => {\n if (e.target === modal) {\n hideSettingsModal();\n }\n });\n // 按ESC键关闭\n document.addEventListener('keydown', (e) => {\n if (e.key === 'Escape' && modal.style.display === 'flex') {\n hideSettingsModal();\n }\n });\n}\n/**\n * 设置复选框实时响应事件\n */\nfunction setupRealTimeCheckboxEvents() {\n try {\n const hideToolbarCheckbox = document.getElementById('hide-toolbar');\n console.log('🔍 设置复选框实时响应 - 隐藏工具栏复选框:', hideToolbarCheckbox);\n if (hideToolbarCheckbox) {\n hideToolbarCheckbox.addEventListener('change', (e) => {\n const isChecked = e.target.checked;\n console.log(`🔄 隐藏工具栏复选框状态已更改为: ${isChecked}`);\n // 实时更新设置\n const currentSettings = (0,_settings_settings_service__WEBPACK_IMPORTED_MODULE_0__.loadSettings)();\n currentSettings.hideToolbar = isChecked;\n (0,_settings_settings_service__WEBPACK_IMPORTED_MODULE_0__.saveSettings)(currentSettings);\n // 立即应用设置\n (0,_settings_settings_service__WEBPACK_IMPORTED_MODULE_0__.applyToolbarSetting)(isChecked);\n // 简化提示信息,不提及具体功能\n showToast(`设置已更新`);\n });\n }\n else {\n console.warn('⚠️ 无法找到隐藏工具栏复选框元素');\n }\n }\n catch (error) {\n console.error('❌ 设置复选框实时响应事件出错:', error);\n }\n}\n/**\n * 从模态框表单中保存设置\n */\nfunction saveSettingsFromModal() {\n console.log('🔍 开始保存设置...');\n // 收集当前设置表单中的值\n const newSettings = (0,_settings_tab__WEBPACK_IMPORTED_MODULE_3__.collectSettingsFromForm)();\n console.log('🔍 收集到的设置:', newSettings);\n // 保存到本地存储\n (0,_settings_settings_service__WEBPACK_IMPORTED_MODULE_0__.saveSettings)(newSettings);\n const savedSettings = (0,_settings_settings_service__WEBPACK_IMPORTED_MODULE_0__.loadSettings)();\n console.log('✅ 确认保存后的设置:', savedSettings);\n console.log('✅ 保存后的hideToolbar值为:', savedSettings.hideToolbar);\n // 先查找Toolbar元素\n const toolbar = document.getElementById('Toolbar');\n console.log('🔍 查找Toolbar元素:', toolbar);\n // 立即应用工具栏设置 - 直接调用\n console.log('🔍 准备直接应用工具栏设置...');\n (0,_settings_settings_service__WEBPACK_IMPORTED_MODULE_0__.applyToolbarSetting)(newSettings.hideToolbar === true);\n console.log('✅ 工具栏设置已直接应用');\n // 应用其他设置\n console.log('✅ 设置保存流程完成');\n // 发送变更通知\n (0,_settings_settings_service__WEBPACK_IMPORTED_MODULE_0__.notifySettingsChanged)();\n // 隐藏设置模态框\n hideSettingsModal();\n // 简单提示,不包含敏感词汇\n const toast = document.createElement('div');\n toast.textContent = '设置已保存';\n toast.style.cssText = 'position:fixed;bottom:120px;left:50%;transform:translateX(-50%);background:rgba(76,175,80,0.9);color:white;padding:8px 16px;border-radius:4px;z-index:10000;';\n document.body.appendChild(toast);\n // 延迟后移除提示\n setTimeout(() => {\n toast.style.opacity = '0';\n toast.style.transition = 'opacity 0.5s ease';\n setTimeout(() => {\n if (toast.parentNode) {\n toast.parentNode.removeChild(toast);\n }\n }, 1000);\n }, 1500);\n // 强制多次应用工具栏设置,确保它生效(仅在控制台日志中保留,不显示给用户)\n setTimeout(() => {\n console.log('🔍 立即再次应用工具栏设置...');\n (0,_settings_settings_service__WEBPACK_IMPORTED_MODULE_0__.applyToolbarSetting)(newSettings.hideToolbar === true);\n }, 100);\n setTimeout(() => {\n console.log('🔍 延迟500ms后再次应用工具栏设置...');\n (0,_settings_settings_service__WEBPACK_IMPORTED_MODULE_0__.applyToolbarSetting)(newSettings.hideToolbar === true);\n }, 500);\n setTimeout(() => {\n console.log('🔍 延迟1000ms后最后应用工具栏设置...');\n (0,_settings_settings_service__WEBPACK_IMPORTED_MODULE_0__.applyToolbarSetting)(newSettings.hideToolbar === true);\n console.log('✅ 工具栏设置已多次应用完成');\n }, 1000);\n}\n/**\n * 显示保存成功提示\n */\nfunction showSaveSuccess() {\n const toastContainer = document.createElement('div');\n toastContainer.innerHTML = createToastTemplate();\n const toast = toastContainer.firstElementChild;\n document.body.appendChild(toast);\n // 触发重排以强制应用过渡效果\n // 使用括号避免TypeScript错误\n (() => toast.offsetWidth)();\n // 显示toast\n toast.style.opacity = '1';\n toast.style.transform = 'translateX(-50%) translateY(0)';\n setTimeout(() => {\n toast.style.opacity = '0';\n toast.style.transform = 'translateX(-50%) translateY(20px)';\n setTimeout(() => {\n if (toast.parentNode) {\n toast.parentNode.removeChild(toast);\n }\n }, 300);\n }, 2000);\n}\n/**\n * 显示设置模态框\n */\nfunction showSettingsModal() {\n const modal = document.getElementById('ast-settings-modal');\n if (modal) {\n modal.style.display = 'flex';\n // 触发重排以强制应用过渡效果\n // 使用括号避免TypeScript错误\n (() => modal.offsetWidth)();\n // 显示模态框\n modal.style.opacity = '1';\n modal.classList.add('visible');\n }\n}\n/**\n * 隐藏设置模态框\n */\nfunction hideSettingsModal() {\n const modal = document.getElementById('ast-settings-modal');\n if (modal) {\n console.log('🔍 关闭设置模态框,自动保存当前设置...');\n // 在关闭前自动保存当前设置\n try {\n // 收集当前设置\n const currentSettings = (0,_settings_tab__WEBPACK_IMPORTED_MODULE_3__.collectSettingsFromForm)();\n console.log('✅ 关闭时收集的设置:', currentSettings);\n // 保存设置\n (0,_settings_settings_service__WEBPACK_IMPORTED_MODULE_0__.saveSettings)(currentSettings);\n console.log('✅ 关闭时设置已保存');\n // 确保设置被应用\n (0,_settings_settings_service__WEBPACK_IMPORTED_MODULE_0__.applyAllSettings)(currentSettings);\n console.log('✅ 关闭时设置已应用');\n }\n catch (error) {\n console.error('❌ 关闭模态框时保存设置出错:', error);\n }\n // 淡出动画\n modal.style.opacity = '0';\n modal.classList.remove('visible');\n // 等待过渡完成后隐藏\n setTimeout(() => {\n modal.style.display = 'none';\n // 重置标签页状态为设置标签页\n (0,_tabs__WEBPACK_IMPORTED_MODULE_2__.resetTabsState)(modal);\n }, 300);\n }\n}\n/**\n * 处理设置变更事件\n */\nfunction handleSettingsChanged(event) {\n _logger__WEBPACK_IMPORTED_MODULE_1__.logger.debug('接收到设置变更事件');\n const settings = event.detail;\n _logger__WEBPACK_IMPORTED_MODULE_1__.logger.debug('从事件中提取的设置:', settings);\n if (settings) {\n _logger__WEBPACK_IMPORTED_MODULE_1__.logger.debug('准备应用变更后的设置...');\n _logger__WEBPACK_IMPORTED_MODULE_1__.logger.debug('hideToolbar值为:', settings.hideToolbar);\n // 应用所有设置\n (0,_settings_settings_service__WEBPACK_IMPORTED_MODULE_0__.applyAllSettings)(settings);\n _logger__WEBPACK_IMPORTED_MODULE_1__.logger.debug('设置变更事件处理完成');\n }\n else {\n _logger__WEBPACK_IMPORTED_MODULE_1__.logger.warn('设置变更事件中没有包含有效的设置数据');\n }\n}\n/**\n * 显示临时Toast消息\n * @param message 消息内容\n * @param duration 显示时间(毫秒)\n */\nfunction showToast(message = \"设置已更新\", duration = 2000) {\n // 不论传入什么消息,都只显示\"设置已更新\"\n const toast = document.createElement('div');\n toast.className = 'ast-toast';\n toast.textContent = \"设置已更新\";\n toast.style.cssText = `\n position: fixed;\n bottom: 120px;\n left: 50%;\n transform: translateX(-50%);\n background: rgba(76, 175, 80, 0.9);\n color: white;\n padding: 8px 16px;\n border-radius: 4px;\n z-index: 10001;\n opacity: 1;\n transition: opacity 0.5s ease;\n `;\n document.body.appendChild(toast);\n // 延迟后淡出并移除\n setTimeout(() => {\n toast.style.opacity = '0';\n setTimeout(() => {\n if (toast.parentNode) {\n toast.parentNode.removeChild(toast);\n }\n }, 500);\n }, duration);\n}\n/**\n * 设置标签页切换事件\n */\nfunction setupTabsEvents() {\n const modal = document.getElementById('ast-settings-modal');\n if (!modal) {\n console.error('❌ 无法找到设置模态框元素');\n return;\n }\n // 范围限定在modal内部查找\n const tabButtons = modal.querySelectorAll('.modal-tabs .tab-button');\n const tabContents = modal.querySelectorAll('.modal-body .tab-content');\n console.log('🔍 找到', tabButtons.length, '个标签按钮和', tabContents.length, '个标签内容区域');\n // 详细检查标签页状态\n const settingsTab = modal.querySelector('#settings-tab');\n const aboutTab = modal.querySelector('#about-tab');\n console.log('🔍 设置标签:', settingsTab ? '已找到' : '未找到', settingsTab);\n console.log('🔍 关于标签:', aboutTab ? '已找到' : '未找到', aboutTab);\n // 检查标签按钮的data-tab属性\n tabButtons.forEach((btn, index) => {\n console.log(`🔍 标签按钮 ${index}:`, btn.dataset.tab, btn);\n });\n // 检查标签内容的id属性\n tabContents.forEach((content, index) => {\n console.log(`🔍 标签内容 ${index}:`, content.id, content);\n });\n // 为每个标签按钮添加点击事件\n tabButtons.forEach(button => {\n button.addEventListener('click', () => {\n const tabId = button.dataset.tab;\n console.log('🔍 标签按钮被点击:', tabId);\n if (!tabId) {\n console.error('❌ 标签按钮没有data-tab属性');\n return;\n }\n // 移除所有激活状态\n tabButtons.forEach(btn => btn.classList.remove('active'));\n tabContents.forEach(content => content.classList.remove('active'));\n // 添加当前标签页的激活状态\n button.classList.add('active');\n // 查找对应的内容元素并激活\n const tabContent = modal.querySelector(`#${tabId}-tab`);\n if (tabContent) {\n tabContent.classList.add('active');\n console.log('✅ 已激活标签页:', tabId);\n }\n else {\n console.error('❌ 无法找到标签内容:', tabId);\n }\n });\n });\n // 确保默认标签页处于激活状态\n const defaultTab = modal.querySelector('.tab-button[data-tab=\"settings\"]');\n if (defaultTab) {\n // 手动触发一次点击事件,确保正确激活\n defaultTab.click();\n console.log('✅ 已激活默认标签页');\n }\n else {\n console.error('❌ 无法找到默认标签按钮');\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDU4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0dBRUc7QUFTc0M7QUFDSDtBQUV3QztBQUM0QjtBQUNsQztBQU0xQztBQUtFO0FBRWhDLFVBQVU7QUFLb0I7QUFLRTtBQUVoQzs7R0FFRztBQUNJLFNBQVMsZ0JBQWdCO0lBQzVCLFNBQVM7SUFDVCxvQkFBb0IsRUFBRSxDQUFDO0lBRXZCLFVBQVU7SUFDVixtQkFBbUIsRUFBRSxDQUFDO0lBRXRCLFdBQVc7SUFDWCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsc0NBQXNDLEVBQUUscUJBQXFCLENBQUMsQ0FBQztBQUM3RixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLG9CQUFvQjtJQUN6QixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLE1BQU0sQ0FBQyxFQUFFLEdBQUcscUJBQXFCLENBQUM7SUFFbEMsYUFBYTtJQUNiLE1BQU0sQ0FBQyxTQUFTLEdBQUcsbUZBQTRCLEVBQUUsQ0FBQztJQUVsRCxPQUFPO0lBQ1AsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUc7Ozs7Ozs7Ozs7Ozs7S0FhdEIsQ0FBQztJQUVGLFVBQVU7SUFDVixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLEtBQUssQ0FBQyxXQUFXLEdBQUcsNEVBQXVCLEVBQUUsQ0FBQztJQUM5QyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVqQyxPQUFPO0lBQ1AsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7UUFDdkMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDO0lBQzFDLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7UUFDdkMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDO0lBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUztJQUNULE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNuQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM1QyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDaEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBRS9CLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQWdCLENBQUM7UUFDckUsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNULE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRWxDLGlCQUFpQjtZQUNqQixxQkFBcUI7WUFDckIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUU3QixNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLGlCQUFpQixFQUFFLENBQUM7WUFDcEIsMkNBQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNuQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLDJDQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsbUJBQW1CO0lBQ3hCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQztJQUVoQyxTQUFTO0lBQ1QsTUFBTSxRQUFRLEdBQUcsd0VBQVksRUFBRSxDQUFDO0lBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFeEQsVUFBVTtJQUNWLEtBQUssQ0FBQyxTQUFTLEdBQUcsMEVBQW1CLEVBQUUsQ0FBQztJQUV4QyxTQUFTO0lBQ1QsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBZ0IsQ0FBQztJQUMxRSxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBZ0IsQ0FBQztJQUM3RSxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBZ0IsQ0FBQztJQUV6RSxVQUFVO0lBQ1YsU0FBUyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSwyREFBb0IsRUFBRSxDQUFDLENBQUM7SUFFakUsVUFBVTtJQUNWLE9BQU8sQ0FBQyxTQUFTLEdBQUcsdUVBQXdCLENBQUMsUUFBUSxDQUFDLEdBQUcsaUVBQXFCLEVBQUUsQ0FBQztJQUVqRixPQUFPO0lBQ1AsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUc7Ozs7Ozs7Ozs7Ozs7S0FhckIsQ0FBQztJQUVGLFlBQVk7SUFDWixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLEtBQUssQ0FBQyxXQUFXLEdBQUc7VUFDZCxtRUFBYyxFQUFFO1VBQ2hCLG9EQUFhLEVBQUU7VUFDZixtRUFBb0IsRUFBRTtVQUN0Qiw2REFBaUIsRUFBRTtVQUNuQixtRUFBYyxFQUFFO0tBQ3JCLENBQUM7SUFDRixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVqQyxTQUFTO0lBQ1QsZ0JBQWdCLEVBQUUsQ0FBQztJQUVuQixlQUFlO0lBQ2YsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNaLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQXFCLENBQUM7UUFDeEYsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRWxELG9CQUFvQjtZQUNwQixJQUFJLG1CQUFtQixDQUFDLE9BQU8sS0FBSyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3ZELE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztnQkFDbkMsbUJBQW1CLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7WUFDdkQsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFUiwyQ0FBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsZ0JBQWdCO0lBQ3JCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM1RCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9CLE9BQU87SUFDWCxDQUFDO0lBRUQsNkJBQTZCO0lBQzdCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdEQsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNYLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQ3BDLGlCQUFpQixFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN0RCxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDbkMscUJBQXFCLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxRQUFRO0lBQ1IsZUFBZSxFQUFFLENBQUM7SUFFbEIsWUFBWTtJQUNaLDJCQUEyQixFQUFFLENBQUM7SUFFOUIsWUFBWTtJQUNaLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNsQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDckIsaUJBQWlCLEVBQUUsQ0FBQztRQUN4QixDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxVQUFVO0lBQ1YsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ3ZDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDdkQsaUJBQWlCLEVBQUUsQ0FBQztRQUN4QixDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLDJCQUEyQjtJQUNoQyxJQUFJLENBQUM7UUFDRCxNQUFNLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFxQixDQUFDO1FBRXhGLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUU3RCxJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDdEIsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2pELE1BQU0sU0FBUyxHQUFJLENBQUMsQ0FBQyxNQUEyQixDQUFDLE9BQU8sQ0FBQztnQkFDekQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFFL0MsU0FBUztnQkFDVCxNQUFNLGVBQWUsR0FBRyx3RUFBWSxFQUFFLENBQUM7Z0JBQ3ZDLGVBQWUsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO2dCQUN4Qyx3RUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUU5QixTQUFTO2dCQUNULCtFQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUUvQixpQkFBaUI7Z0JBQ2pCLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2QixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7SUFDTCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztBQUNMLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMscUJBQXFCO0lBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFNUIsY0FBYztJQUNkLE1BQU0sV0FBVyxHQUFHLHNFQUF1QixFQUFjLENBQUM7SUFDMUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFdkMsVUFBVTtJQUNWLHdFQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUIsTUFBTSxhQUFhLEdBQUcsd0VBQVksRUFBRSxDQUFDO0lBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRS9ELGVBQWU7SUFDZixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFeEMsbUJBQW1CO0lBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNqQywrRUFBbUIsQ0FBQyxXQUFXLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3RELE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFNUIsU0FBUztJQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFMUIsU0FBUztJQUNULGlGQUFxQixFQUFFLENBQUM7SUFFeEIsVUFBVTtJQUNWLGlCQUFpQixFQUFFLENBQUM7SUFFcEIsZUFBZTtJQUNmLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7SUFDNUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsOEpBQThKLENBQUM7SUFDckwsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFakMsVUFBVTtJQUNWLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDWixLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7UUFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsbUJBQW1CLENBQUM7UUFDN0MsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNuQixLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxDQUFDO1FBQ0wsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2IsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRVQsdUNBQXVDO0lBQ3ZDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDWixPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDakMsK0VBQW1CLENBQUMsV0FBVyxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFUixVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3ZDLCtFQUFtQixDQUFDLFdBQVcsQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRVIsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUN4QywrRUFBbUIsQ0FBQyxXQUFXLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ3RELE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNsQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDYixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGVBQWU7SUFDcEIsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRCxjQUFjLENBQUMsU0FBUyxHQUFHLG1CQUFtQixFQUFFLENBQUM7SUFDakQsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLGlCQUFnQyxDQUFDO0lBRTlELFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWpDLGdCQUFnQjtJQUNoQixxQkFBcUI7SUFDckIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUU1QixVQUFVO0lBQ1YsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO0lBQzFCLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLGdDQUFnQyxDQUFDO0lBRXpELFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDWixLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7UUFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsbUNBQW1DLENBQUM7UUFFNUQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNuQixLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxDQUFDO1FBQ0wsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2IsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxpQkFBaUI7SUFDdEIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBZ0IsQ0FBQztJQUMzRSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1IsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBRTdCLGdCQUFnQjtRQUNoQixxQkFBcUI7UUFDckIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUU1QixRQUFRO1FBQ1IsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO1FBQzFCLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7QUFDTCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGlCQUFpQjtJQUN0QixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFnQixDQUFDO0lBQzNFLElBQUksS0FBSyxFQUFFLENBQUM7UUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFdEMsZUFBZTtRQUNmLElBQUksQ0FBQztZQUNELFNBQVM7WUFDVCxNQUFNLGVBQWUsR0FBRyxzRUFBdUIsRUFBRSxDQUFDO1lBQ2xELE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBRTVDLE9BQU87WUFDUCx3RUFBWSxDQUFDLGVBQTJCLENBQUMsQ0FBQztZQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRTFCLFVBQVU7WUFDViw0RUFBZ0IsQ0FBQyxlQUEyQixDQUFDLENBQUM7WUFDOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVELE9BQU87UUFDUCxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7UUFDMUIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFbEMsWUFBWTtRQUNaLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFFN0IsZ0JBQWdCO1lBQ2hCLHFEQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQztBQUNMLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMscUJBQXFCLENBQUMsS0FBWTtJQUN2QywyQ0FBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUUxQixNQUFNLFFBQVEsR0FBSSxLQUFxQixDQUFDLE1BQWtCLENBQUM7SUFDM0QsMkNBQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRXJDLElBQUksUUFBUSxFQUFFLENBQUM7UUFDWCwyQ0FBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5QiwyQ0FBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFckQsU0FBUztRQUNULDRFQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNCLDJDQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9CLENBQUM7U0FBTSxDQUFDO1FBQ0osMkNBQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN0QyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLFNBQVMsQ0FBQyxVQUFrQixPQUFPLEVBQUUsUUFBUSxHQUFHLElBQUk7SUFDekQsdUJBQXVCO0lBQ3ZCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUM7SUFDOUIsS0FBSyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7SUFDNUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUc7Ozs7Ozs7Ozs7OztLQVlyQixDQUFDO0lBRUYsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFakMsV0FBVztJQUNYLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDWixLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7UUFDMUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNuQixLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxDQUFDO1FBQ0wsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2pCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsZUFBZTtJQUNwQixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDNUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMvQixPQUFPO0lBQ1gsQ0FBQztJQUVELGlCQUFpQjtJQUNqQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUNyRSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUV2RSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRWpGLFlBQVk7SUFDWixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNsRSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRTVELG9CQUFvQjtJQUNwQixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxLQUFLLEdBQUcsRUFBRyxHQUFtQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUUsQ0FBQyxDQUFDLENBQUM7SUFFSCxjQUFjO0lBQ2QsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsS0FBSyxHQUFHLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxRCxDQUFDLENBQUMsQ0FBQztJQUVILGdCQUFnQjtJQUNoQixVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3hCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQ2xDLE1BQU0sS0FBSyxHQUFJLE1BQXNCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUVsQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUNwQyxPQUFPO1lBQ1gsQ0FBQztZQUVELFdBQVc7WUFDWCxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUMxRCxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUVuRSxlQUFlO1lBQ2YsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFL0IsZUFBZTtZQUNmLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2IsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3BDLENBQUM7aUJBQU0sQ0FBQztnQkFDSixPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4QyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztJQUVILGdCQUFnQjtJQUNoQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7SUFDM0UsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNiLG9CQUFvQjtRQUNuQixVQUEwQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDOUIsQ0FBQztTQUFNLENBQUM7UUFDSixPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7QUFDTCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYXN0LWV4cGxvcmVyLWhlbHBlci8uL3NyYy91aS9zZXR0aW5ncy11aS9zZXR0aW5ncy11aS5jb21wb25lbnQudHM/M2M0MSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOiuvue9rlVJ57uE5Lu2IC0g6YC76L6R5paH5Lu2XG4gKi9cblxuaW1wb3J0IHsgXG4gICAgbG9hZFNldHRpbmdzLCBcbiAgICBzYXZlU2V0dGluZ3MsIFxuICAgIGFwcGx5QWxsU2V0dGluZ3MsXG4gICAgYXBwbHlUb29sYmFyU2V0dGluZyxcbiAgICBub3RpZnlTZXR0aW5nc0NoYW5nZWQsIFxuICAgIFNldHRpbmdzIFxufSBmcm9tICcuLi8uLi9zZXR0aW5ncy9zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uL2xvZ2dlcic7XG5cbmltcG9ydCB7IGNyZWF0ZVRhYnNOYXZpZ2F0aW9uLCBnZXRUYWJzU3R5bGVzLCByZXNldFRhYnNTdGF0ZSB9IGZyb20gJy4uL3RhYnMnO1xuaW1wb3J0IHsgY3JlYXRlU2V0dGluZ3NUYWJDb250ZW50LCBjb2xsZWN0U2V0dGluZ3NGcm9tRm9ybSwgZ2V0U2V0dGluZ3NUYWJTdHlsZXMgfSBmcm9tICcuLi9zZXR0aW5ncy10YWInO1xuaW1wb3J0IHsgY3JlYXRlQWJvdXRUYWJDb250ZW50LCBnZXRBYm91dFRhYlN0eWxlcyB9IGZyb20gJy4uL2Fib3V0LXRhYic7XG5cbmltcG9ydCB7IFxuICAgIGdldFNldHRpbmdzQnV0dG9uU3R5bGVzLFxuICAgIGdldE1vZGFsU3R5bGVzLCBcbiAgICBnZXRUb2FzdFN0eWxlcyBcbn0gZnJvbSAnLi9zZXR0aW5ncy11aS5zdHlsZXMnO1xuaW1wb3J0IHsgXG4gICAgY3JlYXRlU2V0dGluZ3NCdXR0b25UZW1wbGF0ZSxcbiAgICBjcmVhdGVNb2RhbFRlbXBsYXRlLFxuICAgIGNyZWF0ZVRvYXN0VGVtcGxhdGUgXG59IGZyb20gJy4vc2V0dGluZ3MtdWkudGVtcGxhdGUnO1xuXG4vLyDlr7zlh7rlhazlhbFBUElcbmV4cG9ydCB7IFxuICAgIGdldFNldHRpbmdzQnV0dG9uU3R5bGVzLFxuICAgIGdldE1vZGFsU3R5bGVzLCBcbiAgICBnZXRUb2FzdFN0eWxlcyBcbn0gZnJvbSAnLi9zZXR0aW5ncy11aS5zdHlsZXMnO1xuZXhwb3J0IHsgXG4gICAgY3JlYXRlU2V0dGluZ3NCdXR0b25UZW1wbGF0ZSxcbiAgICBjcmVhdGVNb2RhbFRlbXBsYXRlLFxuICAgIGNyZWF0ZVRvYXN0VGVtcGxhdGUgXG59IGZyb20gJy4vc2V0dGluZ3MtdWkudGVtcGxhdGUnO1xuXG4vKipcbiAqIOWIm+W7uuiuvue9rueVjOmdolxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2V0dGluZ3NVSSgpOiB2b2lkIHtcbiAgICAvLyDmt7vliqDorr7nva7mjInpkq5cbiAgICBjcmVhdGVTZXR0aW5nc0J1dHRvbigpO1xuICAgIFxuICAgIC8vIOWIm+W7uuiuvue9ruaooeaAgeahhlxuICAgIGNyZWF0ZVNldHRpbmdzTW9kYWwoKTtcbiAgICBcbiAgICAvLyDnm5HlkKzorr7nva7lj5jmm7Tkuovku7ZcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdhc3QtZXhwbG9yZXItaGVscGVyLXNldHRpbmdzLWNoYW5nZWQnLCBoYW5kbGVTZXR0aW5nc0NoYW5nZWQpO1xufVxuXG4vKipcbiAqIOWIm+W7uuiuvue9ruaMiemSrlxuICovXG5mdW5jdGlvbiBjcmVhdGVTZXR0aW5nc0J1dHRvbigpOiB2b2lkIHtcbiAgICBjb25zdCBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBidXR0b24uaWQgPSAnYXN0LXNldHRpbmdzLWJ1dHRvbic7XG4gICAgXG4gICAgLy8g5L2/55So5qih5p2/55Sf5oiQ5oyJ6ZKu5YaF5a65XG4gICAgYnV0dG9uLmlubmVySFRNTCA9IGNyZWF0ZVNldHRpbmdzQnV0dG9uVGVtcGxhdGUoKTtcbiAgICBcbiAgICAvLyDln7rnoYDmoLflvI9cbiAgICBidXR0b24uc3R5bGUuY3NzVGV4dCA9IGBcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICBib3R0b206IDIwcHg7XG4gICAgICAgIHJpZ2h0OiAyMHB4O1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHotaW5kZXg6IDk5OTk7XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGN1YmljLWJlemllcigwLjM0LCAxLjU2LCAwLjY0LCAxKTtcbiAgICBgO1xuICAgIFxuICAgIC8vIOa3u+WKoENTU+agt+W8j1xuICAgIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICBzdHlsZS50ZXh0Q29udGVudCA9IGdldFNldHRpbmdzQnV0dG9uU3R5bGVzKCk7XG4gICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgXG4gICAgLy8g5oKs5YGc5pWI5p6cXG4gICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgICAgIGJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAnc2NhbGUoMS4xKSc7XG4gICAgfSk7XG4gICAgXG4gICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoKSA9PiB7XG4gICAgICAgIGJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAnc2NhbGUoMSknO1xuICAgIH0pO1xuICAgIFxuICAgIC8vIOeCueWHu+WKqOeUu+aViOaenFxuICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlY3QgPSBidXR0b24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHggPSBlLmNsaWVudFggLSByZWN0LmxlZnQ7XG4gICAgICAgIGNvbnN0IHkgPSBlLmNsaWVudFkgLSByZWN0LnRvcDtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IHJpcHBsZSA9IGJ1dHRvbi5xdWVyeVNlbGVjdG9yKCcucmlwcGxlLWVmZmVjdCcpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAocmlwcGxlKSB7XG4gICAgICAgICAgICByaXBwbGUuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIOinpuWPkemHjeaOkuS7peS+v+WKqOeUu+WPr+S7pemHjeaWsOW8gOWni1xuICAgICAgICAgICAgLy8g5L2/55So5ous5Y+36YG/5YWNVHlwZVNjcmlwdOmUmeivr1xuICAgICAgICAgICAgKCgpID0+IHJpcHBsZS5vZmZzZXRXaWR0aCkoKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgcmlwcGxlLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHNob3dTZXR0aW5nc01vZGFsKCk7XG4gICAgICAgICAgICBsb2dnZXIuZGVidWcoJ+iuvue9ruaMiemSruiiq+eCueWHu++8jOaYvuekuuiuvue9rumdouadvycpO1xuICAgICAgICB9LCAxNTApO1xuICAgIH0pO1xuICAgIFxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYnV0dG9uKTtcbiAgICBsb2dnZXIuZGVidWcoJ+iuvue9ruaMiemSruW3suWIm+W7uuW5tua3u+WKoOWIsOmhtemdoicpO1xufVxuXG4vKipcbiAqIOWIm+W7uuiuvue9ruaooeaAgeahhlxuICovXG5mdW5jdGlvbiBjcmVhdGVTZXR0aW5nc01vZGFsKCk6IHZvaWQge1xuICAgIGNvbnN0IG1vZGFsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgbW9kYWwuaWQgPSAnYXN0LXNldHRpbmdzLW1vZGFsJztcbiAgICBcbiAgICAvLyDliqDovb3lvZPliY3orr7nva5cbiAgICBjb25zdCBzZXR0aW5ncyA9IGxvYWRTZXR0aW5ncygpO1xuICAgIGNvbnNvbGUubG9nKCfwn5SNIOWIm+W7uuiuvue9ruaooeaAgeahhuaXtuWKoOi9veeahOiuvue9rjonLCBzZXR0aW5ncyk7XG4gICAgY29uc29sZS5sb2coJ/CflI0gaGlkZVRvb2xiYXLlvZPliY3lgLw6Jywgc2V0dGluZ3MuaGlkZVRvb2xiYXIpO1xuICAgIFxuICAgIC8vIOWfuuacrOaooeaAgeahhue7k+aehFxuICAgIG1vZGFsLmlubmVySFRNTCA9IGNyZWF0ZU1vZGFsVGVtcGxhdGUoKTtcbiAgICBcbiAgICAvLyDojrflj5blhoXpg6jlhYPntKBcbiAgICBjb25zdCBtb2RhbENvbnRlbnQgPSBtb2RhbC5xdWVyeVNlbGVjdG9yKCcubW9kYWwtY29udGVudCcpIGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGhlYWRlckRpdiA9IG1vZGFsQ29udGVudC5xdWVyeVNlbGVjdG9yKCcubW9kYWwtaGVhZGVyJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgYm9keURpdiA9IG1vZGFsQ29udGVudC5xdWVyeVNlbGVjdG9yKCcubW9kYWwtYm9keScpIGFzIEhUTUxFbGVtZW50O1xuICAgIFxuICAgIC8vIOaPkuWFpeagh+etvumhteWvvOiIqlxuICAgIGhlYWRlckRpdi5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5kJywgY3JlYXRlVGFic05hdmlnYXRpb24oKSk7XG4gICAgXG4gICAgLy8g5o+S5YWl5qCH562+6aG15YaF5a65XG4gICAgYm9keURpdi5pbm5lckhUTUwgPSBjcmVhdGVTZXR0aW5nc1RhYkNvbnRlbnQoc2V0dGluZ3MpICsgY3JlYXRlQWJvdXRUYWJDb250ZW50KCk7XG4gICAgXG4gICAgLy8g5re75Yqg5qC35byPXG4gICAgbW9kYWwuc3R5bGUuY3NzVGV4dCA9IGBcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICAgICAgei1pbmRleDogMTAwMDA7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcbiAgICBgO1xuICAgIFxuICAgIC8vIOa3u+WKoOaJgOaciee7hOS7tueahOagt+W8j1xuICAgIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICBzdHlsZS50ZXh0Q29udGVudCA9IGBcbiAgICAgICAgJHtnZXRNb2RhbFN0eWxlcygpfVxuICAgICAgICAke2dldFRhYnNTdHlsZXMoKX1cbiAgICAgICAgJHtnZXRTZXR0aW5nc1RhYlN0eWxlcygpfVxuICAgICAgICAke2dldEFib3V0VGFiU3R5bGVzKCl9XG4gICAgICAgICR7Z2V0VG9hc3RTdHlsZXMoKX1cbiAgICBgO1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobW9kYWwpO1xuICAgIFxuICAgIC8vIOa3u+WKoOS6i+S7tuebkeWQrFxuICAgIHNldHVwTW9kYWxFdmVudHMoKTtcbiAgICBcbiAgICAvLyDnoa7orqTlpI3pgInmoYbnirbmgIHkuI7orr7nva7kuIDoh7RcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgaGlkZVRvb2xiYXJDaGVja2JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoaWRlLXRvb2xiYXInKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICBpZiAoaGlkZVRvb2xiYXJDaGVja2JveCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ/CflI0g56Gu6K6k6ZqQ6JeP5bel5YW35qCP5aSN6YCJ5qGG54q25oCBOicsIGhpZGVUb29sYmFyQ2hlY2tib3guY2hlY2tlZCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn8J+UjSDkuI7orr7nva7kuK3nmoTlgLzlr7nmr5Q6Jywgc2V0dGluZ3MuaGlkZVRvb2xiYXIpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyDlpoLmnpzlpI3pgInmoYbnirbmgIHkuI7orr7nva7kuI3kuIDoh7TvvIzliJnmm7TmraNcbiAgICAgICAgICAgIGlmIChoaWRlVG9vbGJhckNoZWNrYm94LmNoZWNrZWQgIT09IHNldHRpbmdzLmhpZGVUb29sYmFyKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+KaoO+4jyDlpI3pgInmoYbnirbmgIHkuI7orr7nva7kuI3kuIDoh7TvvIzov5vooYzmm7TmraMnKTtcbiAgICAgICAgICAgICAgICBoaWRlVG9vbGJhckNoZWNrYm94LmNoZWNrZWQgPSBzZXR0aW5ncy5oaWRlVG9vbGJhcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIDEwMCk7XG4gICAgXG4gICAgbG9nZ2VyLmRlYnVnKCforr7nva7mqKHmgIHmoYblt7LliJvlu7rlubbmt7vliqDliLDpobXpnaInKTtcbn1cblxuLyoqXG4gKiDorr7nva7mqKHmgIHmoYbkuovku7ZcbiAqL1xuZnVuY3Rpb24gc2V0dXBNb2RhbEV2ZW50cygpOiB2b2lkIHtcbiAgICBjb25zdCBtb2RhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhc3Qtc2V0dGluZ3MtbW9kYWwnKTtcbiAgICBpZiAoIW1vZGFsKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ+KdjCDml6Dms5Xmib7liLDorr7nva7mqKHmgIHmoYblhYPntKAnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICAvLyDlhbPpl63mjInpkq4gLSDkv67mraPkuLouY2xvc2UtYnV0dG9u6YCJ5oup5ZmoXG4gICAgY29uc3QgY2xvc2VCdG4gPSBtb2RhbC5xdWVyeVNlbGVjdG9yKCcuY2xvc2UtYnV0dG9uJyk7XG4gICAgaWYgKGNsb3NlQnRuKSB7XG4gICAgICAgIGNsb3NlQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgaGlkZVNldHRpbmdzTW9kYWwoKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKCfimqDvuI8g5peg5rOV5om+5Yiw5YWz6Zet5oyJ6ZKu5YWD57SgICguY2xvc2UtYnV0dG9uKScpO1xuICAgIH1cbiAgICBcbiAgICAvLyDkv53lrZjmjInpkq4gLSDkv67mraPkuLojc2F2ZS1zZXR0aW5nc+mAieaLqeWZqFxuICAgIGNvbnN0IHNhdmVCdG4gPSBtb2RhbC5xdWVyeVNlbGVjdG9yKCcjc2F2ZS1zZXR0aW5ncycpO1xuICAgIGlmIChzYXZlQnRuKSB7XG4gICAgICAgIHNhdmVCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgICBzYXZlU2V0dGluZ3NGcm9tTW9kYWwoKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKCfimqDvuI8g5peg5rOV5om+5Yiw5L+d5a2Y5oyJ6ZKu5YWD57SgICgjc2F2ZS1zZXR0aW5ncyknKTtcbiAgICB9XG4gICAgXG4gICAgLy8g5qCH562+6aG15YiH5o2iXG4gICAgc2V0dXBUYWJzRXZlbnRzKCk7XG4gICAgXG4gICAgLy8g6K6+572u5aSN6YCJ5qGG5a6e5pe25ZON5bqUXG4gICAgc2V0dXBSZWFsVGltZUNoZWNrYm94RXZlbnRzKCk7XG4gICAgXG4gICAgLy8g54K55Ye75qih5oCB5qGG5aSW6YOo5YWz6ZetXG4gICAgbW9kYWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xuICAgICAgICBpZiAoZS50YXJnZXQgPT09IG1vZGFsKSB7XG4gICAgICAgICAgICBoaWRlU2V0dGluZ3NNb2RhbCgpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyDmjIlFU0PplK7lhbPpl61cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGUpID0+IHtcbiAgICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJyAmJiBtb2RhbC5zdHlsZS5kaXNwbGF5ID09PSAnZmxleCcpIHtcbiAgICAgICAgICAgIGhpZGVTZXR0aW5nc01vZGFsKCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuLyoqXG4gKiDorr7nva7lpI3pgInmoYblrp7ml7blk43lupTkuovku7ZcbiAqL1xuZnVuY3Rpb24gc2V0dXBSZWFsVGltZUNoZWNrYm94RXZlbnRzKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGhpZGVUb29sYmFyQ2hlY2tib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGlkZS10b29sYmFyJykgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgXG4gICAgICAgIGNvbnNvbGUubG9nKCfwn5SNIOiuvue9ruWkjemAieahhuWunuaXtuWTjeW6lCAtIOmakOiXj+W3peWFt+agj+WkjemAieahhjonLCBoaWRlVG9vbGJhckNoZWNrYm94KTtcbiAgICAgICAgXG4gICAgICAgIGlmIChoaWRlVG9vbGJhckNoZWNrYm94KSB7XG4gICAgICAgICAgICBoaWRlVG9vbGJhckNoZWNrYm94LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNDaGVja2VkID0gKGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNoZWNrZWQ7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYPCflIQg6ZqQ6JeP5bel5YW35qCP5aSN6YCJ5qGG54q25oCB5bey5pu05pS55Li6OiAke2lzQ2hlY2tlZH1gKTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvLyDlrp7ml7bmm7TmlrDorr7nva5cbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U2V0dGluZ3MgPSBsb2FkU2V0dGluZ3MoKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50U2V0dGluZ3MuaGlkZVRvb2xiYXIgPSBpc0NoZWNrZWQ7XG4gICAgICAgICAgICAgICAgc2F2ZVNldHRpbmdzKGN1cnJlbnRTZXR0aW5ncyk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLy8g56uL5Y2z5bqU55So6K6+572uXG4gICAgICAgICAgICAgICAgYXBwbHlUb29sYmFyU2V0dGluZyhpc0NoZWNrZWQpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIOeugOWMluaPkOekuuS/oeaBr++8jOS4jeaPkOWPiuWFt+S9k+WKn+iDvVxuICAgICAgICAgICAgICAgIHNob3dUb2FzdChg6K6+572u5bey5pu05pawYCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2Fybign4pqg77iPIOaXoOazleaJvuWIsOmakOiXj+W3peWFt+agj+WkjemAieahhuWFg+e0oCcpO1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcign4p2MIOiuvue9ruWkjemAieahhuWunuaXtuWTjeW6lOS6i+S7tuWHuumUmTonLCBlcnJvcik7XG4gICAgfVxufVxuXG4vKipcbiAqIOS7juaooeaAgeahhuihqOWNleS4reS/neWtmOiuvue9rlxuICovXG5mdW5jdGlvbiBzYXZlU2V0dGluZ3NGcm9tTW9kYWwoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ/CflI0g5byA5aeL5L+d5a2Y6K6+572uLi4uJyk7XG4gICAgXG4gICAgLy8g5pS26ZuG5b2T5YmN6K6+572u6KGo5Y2V5Lit55qE5YC8XG4gICAgY29uc3QgbmV3U2V0dGluZ3MgPSBjb2xsZWN0U2V0dGluZ3NGcm9tRm9ybSgpIGFzIFNldHRpbmdzO1xuICAgIGNvbnNvbGUubG9nKCfwn5SNIOaUtumbhuWIsOeahOiuvue9rjonLCBuZXdTZXR0aW5ncyk7XG4gICAgXG4gICAgLy8g5L+d5a2Y5Yiw5pys5Zyw5a2Y5YKoXG4gICAgc2F2ZVNldHRpbmdzKG5ld1NldHRpbmdzKTtcbiAgICBjb25zdCBzYXZlZFNldHRpbmdzID0gbG9hZFNldHRpbmdzKCk7XG4gICAgY29uc29sZS5sb2coJ+KchSDnoa7orqTkv53lrZjlkI7nmoTorr7nva46Jywgc2F2ZWRTZXR0aW5ncyk7XG4gICAgY29uc29sZS5sb2coJ+KchSDkv53lrZjlkI7nmoRoaWRlVG9vbGJhcuWAvOS4ujonLCBzYXZlZFNldHRpbmdzLmhpZGVUb29sYmFyKTtcbiAgICBcbiAgICAvLyDlhYjmn6Xmib5Ub29sYmFy5YWD57SgXG4gICAgY29uc3QgdG9vbGJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdUb29sYmFyJyk7XG4gICAgY29uc29sZS5sb2coJ/CflI0g5p+l5om+VG9vbGJhcuWFg+e0oDonLCB0b29sYmFyKTtcbiAgICBcbiAgICAvLyDnq4vljbPlupTnlKjlt6XlhbfmoI/orr7nva4gLSDnm7TmjqXosIPnlKhcbiAgICBjb25zb2xlLmxvZygn8J+UjSDlh4blpIfnm7TmjqXlupTnlKjlt6XlhbfmoI/orr7nva4uLi4nKTtcbiAgICBhcHBseVRvb2xiYXJTZXR0aW5nKG5ld1NldHRpbmdzLmhpZGVUb29sYmFyID09PSB0cnVlKTtcbiAgICBjb25zb2xlLmxvZygn4pyFIOW3peWFt+agj+iuvue9ruW3suebtOaOpeW6lOeUqCcpO1xuICAgIFxuICAgIC8vIOW6lOeUqOWFtuS7luiuvue9rlxuICAgIGNvbnNvbGUubG9nKCfinIUg6K6+572u5L+d5a2Y5rWB56iL5a6M5oiQJyk7XG4gICAgXG4gICAgLy8g5Y+R6YCB5Y+Y5pu06YCa55+lXG4gICAgbm90aWZ5U2V0dGluZ3NDaGFuZ2VkKCk7XG4gICAgXG4gICAgLy8g6ZqQ6JeP6K6+572u5qih5oCB5qGGXG4gICAgaGlkZVNldHRpbmdzTW9kYWwoKTtcbiAgICBcbiAgICAvLyDnroDljZXmj5DnpLrvvIzkuI3ljIXlkKvmlY/mhJ/or43msYdcbiAgICBjb25zdCB0b2FzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRvYXN0LnRleHRDb250ZW50ID0gJ+iuvue9ruW3suS/neWtmCc7XG4gICAgdG9hc3Quc3R5bGUuY3NzVGV4dCA9ICdwb3NpdGlvbjpmaXhlZDtib3R0b206MTIwcHg7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7YmFja2dyb3VuZDpyZ2JhKDc2LDE3NSw4MCwwLjkpO2NvbG9yOndoaXRlO3BhZGRpbmc6OHB4IDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7ei1pbmRleDoxMDAwMDsnO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodG9hc3QpO1xuICAgIFxuICAgIC8vIOW7tui/n+WQjuenu+mZpOaPkOekulxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0b2FzdC5zdHlsZS5vcGFjaXR5ID0gJzAnO1xuICAgICAgICB0b2FzdC5zdHlsZS50cmFuc2l0aW9uID0gJ29wYWNpdHkgMC41cyBlYXNlJztcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodG9hc3QucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIHRvYXN0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodG9hc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAxMDAwKTtcbiAgICB9LCAxNTAwKTtcbiAgICBcbiAgICAvLyDlvLrliLblpJrmrKHlupTnlKjlt6XlhbfmoI/orr7nva7vvIznoa7kv53lroPnlJ/mlYjvvIjku4XlnKjmjqfliLblj7Dml6Xlv5fkuK3kv53nlZnvvIzkuI3mmL7npLrnu5nnlKjmiLfvvIlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ/CflI0g56uL5Y2z5YaN5qyh5bqU55So5bel5YW35qCP6K6+572uLi4uJyk7XG4gICAgICAgIGFwcGx5VG9vbGJhclNldHRpbmcobmV3U2V0dGluZ3MuaGlkZVRvb2xiYXIgPT09IHRydWUpO1xuICAgIH0sIDEwMCk7XG4gICAgXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCfwn5SNIOW7tui/nzUwMG1z5ZCO5YaN5qyh5bqU55So5bel5YW35qCP6K6+572uLi4uJyk7XG4gICAgICAgIGFwcGx5VG9vbGJhclNldHRpbmcobmV3U2V0dGluZ3MuaGlkZVRvb2xiYXIgPT09IHRydWUpO1xuICAgIH0sIDUwMCk7XG4gICAgXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCfwn5SNIOW7tui/nzEwMDBtc+WQjuacgOWQjuW6lOeUqOW3peWFt+agj+iuvue9ri4uLicpO1xuICAgICAgICBhcHBseVRvb2xiYXJTZXR0aW5nKG5ld1NldHRpbmdzLmhpZGVUb29sYmFyID09PSB0cnVlKTtcbiAgICAgICAgY29uc29sZS5sb2coJ+KchSDlt6XlhbfmoI/orr7nva7lt7LlpJrmrKHlupTnlKjlrozmiJAnKTtcbiAgICB9LCAxMDAwKTtcbn1cblxuLyoqXG4gKiDmmL7npLrkv53lrZjmiJDlip/mj5DnpLpcbiAqL1xuZnVuY3Rpb24gc2hvd1NhdmVTdWNjZXNzKCk6IHZvaWQge1xuICAgIGNvbnN0IHRvYXN0Q29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdG9hc3RDb250YWluZXIuaW5uZXJIVE1MID0gY3JlYXRlVG9hc3RUZW1wbGF0ZSgpO1xuICAgIGNvbnN0IHRvYXN0ID0gdG9hc3RDb250YWluZXIuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0b2FzdCk7XG4gICAgXG4gICAgLy8g6Kem5Y+R6YeN5o6S5Lul5by65Yi25bqU55So6L+H5rih5pWI5p6cXG4gICAgLy8g5L2/55So5ous5Y+36YG/5YWNVHlwZVNjcmlwdOmUmeivr1xuICAgICgoKSA9PiB0b2FzdC5vZmZzZXRXaWR0aCkoKTtcbiAgICBcbiAgICAvLyDmmL7npLp0b2FzdFxuICAgIHRvYXN0LnN0eWxlLm9wYWNpdHkgPSAnMSc7XG4gICAgdG9hc3Quc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgwKSc7XG4gICAgXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRvYXN0LnN0eWxlLm9wYWNpdHkgPSAnMCc7XG4gICAgICAgIHRvYXN0LnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoMjBweCknO1xuICAgICAgICBcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodG9hc3QucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIHRvYXN0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodG9hc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAzMDApO1xuICAgIH0sIDIwMDApO1xufVxuXG4vKipcbiAqIOaYvuekuuiuvue9ruaooeaAgeahhlxuICovXG5mdW5jdGlvbiBzaG93U2V0dGluZ3NNb2RhbCgpOiB2b2lkIHtcbiAgICBjb25zdCBtb2RhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhc3Qtc2V0dGluZ3MtbW9kYWwnKSBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAobW9kYWwpIHtcbiAgICAgICAgbW9kYWwuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICAgICAgXG4gICAgICAgIC8vIOinpuWPkemHjeaOkuS7peW8uuWItuW6lOeUqOi/h+a4oeaViOaenFxuICAgICAgICAvLyDkvb/nlKjmi6zlj7fpgb/lhY1UeXBlU2NyaXB06ZSZ6K+vXG4gICAgICAgICgoKSA9PiBtb2RhbC5vZmZzZXRXaWR0aCkoKTtcbiAgICAgICAgXG4gICAgICAgIC8vIOaYvuekuuaooeaAgeahhlxuICAgICAgICBtb2RhbC5zdHlsZS5vcGFjaXR5ID0gJzEnO1xuICAgICAgICBtb2RhbC5jbGFzc0xpc3QuYWRkKCd2aXNpYmxlJyk7XG4gICAgfVxufVxuXG4vKipcbiAqIOmakOiXj+iuvue9ruaooeaAgeahhlxuICovXG5mdW5jdGlvbiBoaWRlU2V0dGluZ3NNb2RhbCgpOiB2b2lkIHtcbiAgICBjb25zdCBtb2RhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhc3Qtc2V0dGluZ3MtbW9kYWwnKSBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAobW9kYWwpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ/CflI0g5YWz6Zet6K6+572u5qih5oCB5qGG77yM6Ieq5Yqo5L+d5a2Y5b2T5YmN6K6+572uLi4uJyk7XG4gICAgICAgIFxuICAgICAgICAvLyDlnKjlhbPpl63liY3oh6rliqjkv53lrZjlvZPliY3orr7nva5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIOaUtumbhuW9k+WJjeiuvue9rlxuICAgICAgICAgICAgY29uc3QgY3VycmVudFNldHRpbmdzID0gY29sbGVjdFNldHRpbmdzRnJvbUZvcm0oKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfinIUg5YWz6Zet5pe25pS26ZuG55qE6K6+572uOicsIGN1cnJlbnRTZXR0aW5ncyk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIOS/neWtmOiuvue9rlxuICAgICAgICAgICAgc2F2ZVNldHRpbmdzKGN1cnJlbnRTZXR0aW5ncyBhcyBTZXR0aW5ncyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn4pyFIOWFs+mXreaXtuiuvue9ruW3suS/neWtmCcpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyDnoa7kv53orr7nva7ooqvlupTnlKhcbiAgICAgICAgICAgIGFwcGx5QWxsU2V0dGluZ3MoY3VycmVudFNldHRpbmdzIGFzIFNldHRpbmdzKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfinIUg5YWz6Zet5pe26K6+572u5bey5bqU55SoJyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCfinYwg5YWz6Zet5qih5oCB5qGG5pe25L+d5a2Y6K6+572u5Ye66ZSZOicsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8g5reh5Ye65Yqo55S7XG4gICAgICAgIG1vZGFsLnN0eWxlLm9wYWNpdHkgPSAnMCc7XG4gICAgICAgIG1vZGFsLmNsYXNzTGlzdC5yZW1vdmUoJ3Zpc2libGUnKTtcbiAgICAgICAgXG4gICAgICAgIC8vIOetieW+hei/h+a4oeWujOaIkOWQjumakOiXj1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIG1vZGFsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIOmHjee9ruagh+etvumhteeKtuaAgeS4uuiuvue9ruagh+etvumhtVxuICAgICAgICAgICAgcmVzZXRUYWJzU3RhdGUobW9kYWwpO1xuICAgICAgICB9LCAzMDApO1xuICAgIH1cbn1cblxuLyoqXG4gKiDlpITnkIborr7nva7lj5jmm7Tkuovku7ZcbiAqL1xuZnVuY3Rpb24gaGFuZGxlU2V0dGluZ3NDaGFuZ2VkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGxvZ2dlci5kZWJ1Zygn5o6l5pS25Yiw6K6+572u5Y+Y5pu05LqL5Lu2Jyk7XG4gICAgXG4gICAgY29uc3Qgc2V0dGluZ3MgPSAoZXZlbnQgYXMgQ3VzdG9tRXZlbnQpLmRldGFpbCBhcyBTZXR0aW5ncztcbiAgICBsb2dnZXIuZGVidWcoJ+S7juS6i+S7tuS4reaPkOWPlueahOiuvue9rjonLCBzZXR0aW5ncyk7XG4gICAgXG4gICAgaWYgKHNldHRpbmdzKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1Zygn5YeG5aSH5bqU55So5Y+Y5pu05ZCO55qE6K6+572uLi4uJyk7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnaGlkZVRvb2xiYXLlgLzkuLo6Jywgc2V0dGluZ3MuaGlkZVRvb2xiYXIpO1xuICAgICAgICBcbiAgICAgICAgLy8g5bqU55So5omA5pyJ6K6+572uXG4gICAgICAgIGFwcGx5QWxsU2V0dGluZ3Moc2V0dGluZ3MpO1xuICAgICAgICBsb2dnZXIuZGVidWcoJ+iuvue9ruWPmOabtOS6i+S7tuWkhOeQhuWujOaIkCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZ2dlci53YXJuKCforr7nva7lj5jmm7Tkuovku7bkuK3msqHmnInljIXlkKvmnInmlYjnmoTorr7nva7mlbDmja4nKTtcbiAgICB9XG59XG5cbi8qKlxuICog5pi+56S65Li05pe2VG9hc3Tmtojmga9cbiAqIEBwYXJhbSBtZXNzYWdlIOa2iOaBr+WGheWuuVxuICogQHBhcmFtIGR1cmF0aW9uIOaYvuekuuaXtumXtO+8iOavq+enku+8iVxuICovXG5mdW5jdGlvbiBzaG93VG9hc3QobWVzc2FnZTogc3RyaW5nID0gXCLorr7nva7lt7Lmm7TmlrBcIiwgZHVyYXRpb24gPSAyMDAwKTogdm9pZCB7XG4gICAgLy8g5LiN6K665Lyg5YWl5LuA5LmI5raI5oGv77yM6YO95Y+q5pi+56S6XCLorr7nva7lt7Lmm7TmlrBcIlxuICAgIGNvbnN0IHRvYXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdG9hc3QuY2xhc3NOYW1lID0gJ2FzdC10b2FzdCc7XG4gICAgdG9hc3QudGV4dENvbnRlbnQgPSBcIuiuvue9ruW3suabtOaWsFwiO1xuICAgIHRvYXN0LnN0eWxlLmNzc1RleHQgPSBgXG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgYm90dG9tOiAxMjBweDtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNzYsIDE3NSwgODAsIDAuOSk7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgcGFkZGluZzogOHB4IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgei1pbmRleDogMTAwMDE7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC41cyBlYXNlO1xuICAgIGA7XG4gICAgXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0b2FzdCk7XG4gICAgXG4gICAgLy8g5bu26L+f5ZCO5reh5Ye65bm256e76ZmkXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRvYXN0LnN0eWxlLm9wYWNpdHkgPSAnMCc7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRvYXN0LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICB0b2FzdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRvYXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgNTAwKTtcbiAgICB9LCBkdXJhdGlvbik7XG59XG5cbi8qKlxuICog6K6+572u5qCH562+6aG15YiH5o2i5LqL5Lu2XG4gKi9cbmZ1bmN0aW9uIHNldHVwVGFic0V2ZW50cygpOiB2b2lkIHtcbiAgICBjb25zdCBtb2RhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhc3Qtc2V0dGluZ3MtbW9kYWwnKTtcbiAgICBpZiAoIW1vZGFsKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ+KdjCDml6Dms5Xmib7liLDorr7nva7mqKHmgIHmoYblhYPntKAnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICAvLyDojIPlm7TpmZDlrprlnKhtb2RhbOWGhemDqOafpeaJvlxuICAgIGNvbnN0IHRhYkJ1dHRvbnMgPSBtb2RhbC5xdWVyeVNlbGVjdG9yQWxsKCcubW9kYWwtdGFicyAudGFiLWJ1dHRvbicpO1xuICAgIGNvbnN0IHRhYkNvbnRlbnRzID0gbW9kYWwucXVlcnlTZWxlY3RvckFsbCgnLm1vZGFsLWJvZHkgLnRhYi1jb250ZW50Jyk7XG4gICAgXG4gICAgY29uc29sZS5sb2coJ/CflI0g5om+5YiwJywgdGFiQnV0dG9ucy5sZW5ndGgsICfkuKrmoIfnrb7mjInpkq7lkownLCB0YWJDb250ZW50cy5sZW5ndGgsICfkuKrmoIfnrb7lhoXlrrnljLrln58nKTtcbiAgICBcbiAgICAvLyDor6bnu4bmo4Dmn6XmoIfnrb7pobXnirbmgIFcbiAgICBjb25zdCBzZXR0aW5nc1RhYiA9IG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJyNzZXR0aW5ncy10YWInKTtcbiAgICBjb25zdCBhYm91dFRhYiA9IG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJyNhYm91dC10YWInKTtcbiAgICBjb25zb2xlLmxvZygn8J+UjSDorr7nva7moIfnrb46Jywgc2V0dGluZ3NUYWIgPyAn5bey5om+5YiwJyA6ICfmnKrmib7liLAnLCBzZXR0aW5nc1RhYik7XG4gICAgY29uc29sZS5sb2coJ/CflI0g5YWz5LqO5qCH562+OicsIGFib3V0VGFiID8gJ+W3suaJvuWIsCcgOiAn5pyq5om+5YiwJywgYWJvdXRUYWIpO1xuICAgIFxuICAgIC8vIOajgOafpeagh+etvuaMiemSrueahGRhdGEtdGFi5bGe5oCnXG4gICAgdGFiQnV0dG9ucy5mb3JFYWNoKChidG4sIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGDwn5SNIOagh+etvuaMiemSriAke2luZGV4fTpgLCAoYnRuIGFzIEhUTUxFbGVtZW50KS5kYXRhc2V0LnRhYiwgYnRuKTtcbiAgICB9KTtcbiAgICBcbiAgICAvLyDmo4Dmn6XmoIfnrb7lhoXlrrnnmoRpZOWxnuaAp1xuICAgIHRhYkNvbnRlbnRzLmZvckVhY2goKGNvbnRlbnQsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGDwn5SNIOagh+etvuWGheWuuSAke2luZGV4fTpgLCBjb250ZW50LmlkLCBjb250ZW50KTtcbiAgICB9KTtcbiAgICBcbiAgICAvLyDkuLrmr4/kuKrmoIfnrb7mjInpkq7mt7vliqDngrnlh7vkuovku7ZcbiAgICB0YWJCdXR0b25zLmZvckVhY2goYnV0dG9uID0+IHtcbiAgICAgICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGFiSWQgPSAoYnV0dG9uIGFzIEhUTUxFbGVtZW50KS5kYXRhc2V0LnRhYjtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfwn5SNIOagh+etvuaMiemSruiiq+eCueWHuzonLCB0YWJJZCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICghdGFiSWQpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfinYwg5qCH562+5oyJ6ZKu5rKh5pyJZGF0YS10YWLlsZ7mgKcnKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIOenu+mZpOaJgOaciea/gOa0u+eKtuaAgVxuICAgICAgICAgICAgdGFiQnV0dG9ucy5mb3JFYWNoKGJ0biA9PiBidG4uY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJykpO1xuICAgICAgICAgICAgdGFiQ29udGVudHMuZm9yRWFjaChjb250ZW50ID0+IGNvbnRlbnQuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJykpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyDmt7vliqDlvZPliY3moIfnrb7pobXnmoTmv4DmtLvnirbmgIFcbiAgICAgICAgICAgIGJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8g5p+l5om+5a+55bqU55qE5YaF5a655YWD57Sg5bm25r+A5rS7XG4gICAgICAgICAgICBjb25zdCB0YWJDb250ZW50ID0gbW9kYWwucXVlcnlTZWxlY3RvcihgIyR7dGFiSWR9LXRhYmApO1xuICAgICAgICAgICAgaWYgKHRhYkNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICB0YWJDb250ZW50LmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCfinIUg5bey5r+A5rS75qCH562+6aG1OicsIHRhYklkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign4p2MIOaXoOazleaJvuWIsOagh+etvuWGheWuuTonLCB0YWJJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIFxuICAgIC8vIOehruS/nem7mOiupOagh+etvumhteWkhOS6jua/gOa0u+eKtuaAgVxuICAgIGNvbnN0IGRlZmF1bHRUYWIgPSBtb2RhbC5xdWVyeVNlbGVjdG9yKCcudGFiLWJ1dHRvbltkYXRhLXRhYj1cInNldHRpbmdzXCJdJyk7XG4gICAgaWYgKGRlZmF1bHRUYWIpIHtcbiAgICAgICAgLy8g5omL5Yqo6Kem5Y+R5LiA5qyh54K55Ye75LqL5Lu277yM56Gu5L+d5q2j56Gu5r+A5rS7XG4gICAgICAgIChkZWZhdWx0VGFiIGFzIEhUTUxFbGVtZW50KS5jbGljaygpO1xuICAgICAgICBjb25zb2xlLmxvZygn4pyFIOW3sua/gOa0u+m7mOiupOagh+etvumhtScpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ+KdjCDml6Dms5Xmib7liLDpu5jorqTmoIfnrb7mjInpkq4nKTtcbiAgICB9XG59ICJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///458\n");
/***/ }),
/***/ 481:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createTabsNavigation: () => (/* reexport safe */ _tabs_component__WEBPACK_IMPORTED_MODULE_0__.createTabsNavigation),\n/* harmony export */ getTabsStyles: () => (/* reexport safe */ _tabs_component__WEBPACK_IMPORTED_MODULE_0__.getTabsStyles),\n/* harmony export */ initTabEvents: () => (/* reexport safe */ _tabs_component__WEBPACK_IMPORTED_MODULE_0__.initTabEvents),\n/* harmony export */ resetTabsState: () => (/* reexport safe */ _tabs_component__WEBPACK_IMPORTED_MODULE_0__.resetTabsState)\n/* harmony export */ });\n/* harmony import */ var _tabs_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(792);\n/**\n * 标签页组件 - 入口文件\n */\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDgxLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7O0dBRUc7QUFPdUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9hc3QtZXhwbG9yZXItaGVscGVyLy4vc3JjL3VpL3RhYnMvaW5kZXgudHM/MjhhYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOagh+etvumhtee7hOS7tiAtIOWFpeWPo+aWh+S7tlxuICovXG5cbmV4cG9ydCB7IFxuICAgIGluaXRUYWJFdmVudHMsIFxuICAgIHJlc2V0VGFic1N0YXRlLFxuICAgIGdldFRhYnNTdHlsZXMsXG4gICAgY3JlYXRlVGFic05hdmlnYXRpb25cbn0gZnJvbSAnLi90YWJzLmNvbXBvbmVudCc7ICJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///481\n");
/***/ }),
/***/ 494:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ handleRightClick: () => (/* binding */ handleRightClick),\n/* harmony export */ setSelectable: () => (/* binding */ setSelectable),\n/* harmony export */ sleep: () => (/* binding */ sleep)\n/* harmony export */ });\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(610);\n/**\n * DOM 操作相关的工具函数\n */\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n/**\n * 使节点内容可选\n * @param doneKey 标记属性名\n */\nfunction setSelectable() {\n return __awaiter(this, arguments, void 0, function* (doneKey = \"cc11001100_select_enable\") {\n const elements = document.querySelectorAll(\".tree-visualization > ul *\");\n let newElementsCount = 0;\n elements.forEach(element => {\n if (element.getAttribute(doneKey)) {\n return;\n }\n element.style.cssText = \"; user-select: text !important; -webkit-user-select: text !important; \";\n element.setAttribute(doneKey, \"true\");\n // 添加右键菜单事件\n element.addEventListener('contextmenu', handleRightClick);\n newElementsCount++;\n });\n if (newElementsCount > 0) {\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug(`处理了 ${newElementsCount} 个新节点,使其内容可选`);\n }\n });\n}\n/**\n * 处理右键点击事件\n * @param e 鼠标事件\n */\nfunction handleRightClick(e) {\n var _a;\n e.preventDefault();\n e.stopPropagation();\n const menu = document.getElementById(\"ast-context-menu\");\n if (!menu) {\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.warn('未找到右键菜单元素');\n return;\n }\n // 保存当前目标节点\n menu.targetNode = this;\n // 设置菜单位置\n menu.style.left = `${e.pageX}px`;\n menu.style.top = `${e.pageY}px`;\n menu.style.display = 'block';\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('显示右键菜单,目标节点:', this.tagName, (_a = this.textContent) === null || _a === void 0 ? void 0 : _a.trim().substring(0, 30));\n}\n/**\n * 延迟函数\n * @param mils 延迟毫秒数\n */\nfunction sleep(mils) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise(resolve => setTimeout(resolve, mils));\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDk0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7R0FFRzs7Ozs7Ozs7OztBQUVnQztBQVNuQzs7O0dBR0c7QUFDSSxTQUFlLGFBQWE7eURBQUMsVUFBa0IsMEJBQTBCO1FBQzVFLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBYyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3RGLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBRXpCLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdkIsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLE9BQU87WUFDWCxDQUFDO1lBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsd0VBQXdFLENBQUM7WUFDakcsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFdEMsV0FBVztZQUNYLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUUxRCxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2QiwyQ0FBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLGdCQUFnQixjQUFjLENBQUMsQ0FBQztRQUN4RCxDQUFDO0lBQ0wsQ0FBQztDQUFBO0FBRUQ7OztHQUdHO0FBQ0ksU0FBUyxnQkFBZ0IsQ0FBb0IsQ0FBYTs7SUFDN0QsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ25CLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUVwQixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUE4QixDQUFDO0lBQ3RGLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLDJDQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pCLE9BQU87SUFDWCxDQUFDO0lBRUQsV0FBVztJQUNYLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBRXZCLFNBQVM7SUFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQztJQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQztJQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFFN0IsMkNBQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBSSxDQUFDLFdBQVcsMENBQUUsSUFBSSxHQUFHLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMxRixDQUFDO0FBRUQ7OztHQUdHO0FBQ0ksU0FBZSxLQUFLLENBQUMsSUFBWTs7UUFDcEMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9hc3QtZXhwbG9yZXItaGVscGVyLy4vc3JjL2RvbS1oZWxwZXJzL2RvbS11dGlscy50cz80NDAyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRE9NIOaTjeS9nOebuOWFs+eahOW3peWFt+WHveaVsFxuICovXG5cbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL2xvZ2dlcic7XG5cbi8qKlxuICog6Ieq5a6a5LmJ57G75Z6L77yM5omp5bGVSFRNTEVsZW1lbnRcbiAqL1xuaW50ZXJmYWNlIENvbnRleHRNZW51RWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHtcbiAgICB0YXJnZXROb2RlPzogSFRNTEVsZW1lbnQ7XG59XG5cbi8qKlxuICog5L2/6IqC54K55YaF5a655Y+v6YCJXG4gKiBAcGFyYW0gZG9uZUtleSDmoIforrDlsZ7mgKflkI1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNldFNlbGVjdGFibGUoZG9uZUtleTogc3RyaW5nID0gXCJjYzExMDAxMTAwX3NlbGVjdF9lbmFibGVcIik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oXCIudHJlZS12aXN1YWxpemF0aW9uID4gdWwgKlwiKTtcbiAgICBsZXQgbmV3RWxlbWVudHNDb3VudCA9IDA7XG5cbiAgICBlbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoZG9uZUtleSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBlbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcIjsgdXNlci1zZWxlY3Q6IHRleHQgIWltcG9ydGFudDsgLXdlYmtpdC11c2VyLXNlbGVjdDogdGV4dCAhaW1wb3J0YW50OyBcIjtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoZG9uZUtleSwgXCJ0cnVlXCIpO1xuICAgICAgICBcbiAgICAgICAgLy8g5re75Yqg5Y+z6ZSu6I+c5Y2V5LqL5Lu2XG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY29udGV4dG1lbnUnLCBoYW5kbGVSaWdodENsaWNrKTtcbiAgICAgICAgXG4gICAgICAgIG5ld0VsZW1lbnRzQ291bnQrKztcbiAgICB9KTtcblxuICAgIGlmIChuZXdFbGVtZW50c0NvdW50ID4gMCkge1xuICAgICAgICBsb2dnZXIuZGVidWcoYOWkhOeQhuS6hiAke25ld0VsZW1lbnRzQ291bnR9IOS4quaWsOiKgueCue+8jOS9v+WFtuWGheWuueWPr+mAiWApO1xuICAgIH1cbn1cblxuLyoqXG4gKiDlpITnkIblj7PplK7ngrnlh7vkuovku7ZcbiAqIEBwYXJhbSBlIOm8oOagh+S6i+S7tlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlUmlnaHRDbGljayh0aGlzOiBIVE1MRWxlbWVudCwgZTogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIFxuICAgIGNvbnN0IG1lbnUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFzdC1jb250ZXh0LW1lbnVcIikgYXMgQ29udGV4dE1lbnVFbGVtZW50IHwgbnVsbDtcbiAgICBpZiAoIW1lbnUpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ+acquaJvuWIsOWPs+mUruiPnOWNleWFg+e0oCcpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIC8vIOS/neWtmOW9k+WJjeebruagh+iKgueCuVxuICAgIG1lbnUudGFyZ2V0Tm9kZSA9IHRoaXM7XG4gICAgXG4gICAgLy8g6K6+572u6I+c5Y2V5L2N572uXG4gICAgbWVudS5zdHlsZS5sZWZ0ID0gYCR7ZS5wYWdlWH1weGA7XG4gICAgbWVudS5zdHlsZS50b3AgPSBgJHtlLnBhZ2VZfXB4YDtcbiAgICBtZW51LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuXG4gICAgbG9nZ2VyLmRlYnVnKCfmmL7npLrlj7PplK7oj5zljZXvvIznm67moIfoioLngrk6JywgdGhpcy50YWdOYW1lLCB0aGlzLnRleHRDb250ZW50Py50cmltKCkuc3Vic3RyaW5nKDAsIDMwKSk7XG59XG5cbi8qKlxuICog5bu26L+f5Ye95pWwXG4gKiBAcGFyYW0gbWlscyDlu7bov5/mr6vnp5LmlbBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNsZWVwKG1pbHM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbWlscykpO1xufSAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///494\n");
/***/ }),
/***/ 533:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getTabsStyles: () => (/* binding */ getTabsStyles)\n/* harmony export */ });\n/**\n * 标签页组件 - 样式文件\n */\n/**\n * 获取标签页样式\n * @returns 标签页通用CSS样式\n */\nfunction getTabsStyles() {\n return `\n #ast-settings-modal .modal-tabs {\n display: flex;\n background-color: #f5f7fa;\n border-bottom: 1px solid #eee;\n }\n \n #ast-settings-modal .tab-button {\n flex: 1;\n background: none;\n border: none;\n padding: 12px;\n font-size: 15px;\n cursor: pointer;\n position: relative;\n color: #666;\n font-weight: 500;\n transition: all 0.2s;\n }\n \n #ast-settings-modal .tab-button:hover {\n color: #4a90e2;\n background-color: #f0f4f9;\n }\n \n #ast-settings-modal .tab-button.active {\n color: #4a90e2;\n }\n \n #ast-settings-modal .tab-button.active::after {\n content: '';\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: 3px;\n background-color: #4a90e2;\n }\n \n #ast-settings-modal .tab-content {\n display: none;\n }\n \n #ast-settings-modal .tab-content.active {\n display: block;\n }\n \n /* 根据当前标签页显示/隐藏元素 */\n #ast-settings-modal .only-settings-tab {\n display: none;\n }\n \n #ast-settings-modal .tab-button[data-tab=\"settings\"].active ~ .modal-body ~ .modal-footer .only-settings-tab {\n display: inline-block;\n }\n `;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTMzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7R0FFRztBQUVIOzs7R0FHRztBQUNJLFNBQVMsYUFBYTtJQUN6QixPQUFPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBdUROLENBQUM7QUFDTixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYXN0LWV4cGxvcmVyLWhlbHBlci8uL3NyYy91aS90YWJzL3RhYnMuc3R5bGVzLnRzPzZlNWMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDmoIfnrb7pobXnu4Tku7YgLSDmoLflvI/mlofku7ZcbiAqL1xuXG4vKipcbiAqIOiOt+WPluagh+etvumhteagt+W8j1xuICogQHJldHVybnMg5qCH562+6aG16YCa55SoQ1NT5qC35byPXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYWJzU3R5bGVzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAubW9kYWwtdGFicyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjdmYTtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC50YWItYnV0dG9uIHtcbiAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgcGFkZGluZzogMTJweDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGNvbG9yOiAjNjY2O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC50YWItYnV0dG9uOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiAjNGE5MGUyO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjRmOTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAudGFiLWJ1dHRvbi5hY3RpdmUge1xuICAgICAgICAgICAgY29sb3I6ICM0YTkwZTI7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLnRhYi1idXR0b24uYWN0aXZlOjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIGhlaWdodDogM3B4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzRhOTBlMjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAudGFiLWNvbnRlbnQge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAudGFiLWNvbnRlbnQuYWN0aXZlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvKiDmoLnmja7lvZPliY3moIfnrb7pobXmmL7npLov6ZqQ6JeP5YWD57SgICovXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLm9ubHktc2V0dGluZ3MtdGFiIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLnRhYi1idXR0b25bZGF0YS10YWI9XCJzZXR0aW5nc1wiXS5hY3RpdmUgfiAubW9kYWwtYm9keSB+IC5tb2RhbC1mb290ZXIgLm9ubHktc2V0dGluZ3MtdGFiIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgfVxuICAgIGA7XG59ICJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///533\n");
/***/ }),
/***/ 536:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createContextMenu: () => (/* reexport safe */ _context_menu_component__WEBPACK_IMPORTED_MODULE_0__.createContextMenu),\n/* harmony export */ createSettingsUI: () => (/* reexport safe */ _settings_ui__WEBPACK_IMPORTED_MODULE_1__.createSettingsUI)\n/* harmony export */ });\n/* harmony import */ var _context_menu_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(562);\n/* harmony import */ var _settings_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(629);\n/**\n * UI组件模块入口\n */\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTM2LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7R0FFRztBQUUwRDtBQUNaIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYXN0LWV4cGxvcmVyLWhlbHBlci8uL3NyYy91aS9pbmRleC50cz9mNzliIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVUnnu4Tku7bmqKHlnZflhaXlj6NcbiAqL1xuXG5leHBvcnQgeyBjcmVhdGVDb250ZXh0TWVudSB9IGZyb20gJy4vY29udGV4dC1tZW51LmNvbXBvbmVudCc7XG5leHBvcnQgeyBjcmVhdGVTZXR0aW5nc1VJIH0gZnJvbSAnLi9zZXR0aW5ncy11aSc7ICJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///536\n");
/***/ }),
/***/ 562:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createContextMenu: () => (/* binding */ createContextMenu),\n/* harmony export */ expandAllNodes: () => (/* binding */ expandAllNodes),\n/* harmony export */ setupKeyboardShortcuts: () => (/* binding */ setupKeyboardShortcuts)\n/* harmony export */ });\n/* harmony import */ var _clipboard_clipboard_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(879);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(610);\n/**\n * 右键菜单组件\n */\n\n\n/**\n * 递归展开指定节点下的所有子节点\n * @param node 要展开的节点\n */\nfunction expandAllNodes(node) {\n var _a;\n // 首先找到包含当前节点的可折叠节点\n let targetNode = node;\n while (targetNode && !targetNode.classList.contains('entry')) {\n targetNode = targetNode.parentElement;\n }\n if (!targetNode) {\n _logger__WEBPACK_IMPORTED_MODULE_1__.logger.info('未找到可折叠节点');\n return;\n }\n _logger__WEBPACK_IMPORTED_MODULE_1__.logger.info('找到可折叠节点:', {\n tagName: targetNode.tagName,\n className: targetNode.className,\n textContent: (_a = targetNode.textContent) === null || _a === void 0 ? void 0 : _a.substring(0, 50)\n });\n // 递归展开节点的函数\n function expandNodes(currentNode) {\n var _a;\n // 如果当前节点未展开,先展开它\n if (!currentNode.classList.contains('open')) {\n const expandIcon = currentNode.querySelector('.disclosure-arrow') ||\n currentNode.querySelector('.arrow') ||\n currentNode.querySelector('[class*=\"arrow\"]');\n if (expandIcon && expandIcon instanceof HTMLElement) {\n _logger__WEBPACK_IMPORTED_MODULE_1__.logger.info('点击展开节点:', (_a = currentNode.textContent) === null || _a === void 0 ? void 0 : _a.substring(0, 50));\n expandIcon.click();\n }\n }\n // 等待一小段时间让DOM更新\n setTimeout(() => {\n // 查找所有未展开的子节点\n const childNodes = Array.from(currentNode.querySelectorAll('.entry:not(.open)'));\n if (childNodes.length > 0) {\n _logger__WEBPACK_IMPORTED_MODULE_1__.logger.info(`找到 ${childNodes.length} 个未展开的子节点`);\n // 递归展开每个子节点\n childNodes.forEach((child, index) => {\n setTimeout(() => {\n expandNodes(child);\n }, index * 50); // 每个节点间隔 50ms 展开,避免一次性点击太多\n });\n }\n }, 100);\n }\n // 开始递归展开\n expandNodes(targetNode);\n}\n/**\n * 创建自定义右键菜单\n */\nfunction createContextMenu() {\n // 检查菜单是否已经存在\n if (document.getElementById(\"ast-context-menu\")) {\n return;\n }\n // 创建菜单HTML\n const menuHtml = `\n <div id=\"ast-context-menu\" style=\"display:none; position:fixed; z-index:10000; background:#fff; border:1px solid #ccc; box-shadow:2px 2px 5px rgba(0,0,0,0.3); border-radius:4px; padding:5px 0;\">\n <div class=\"menu-item\" data-action=\"copy\">复制</div>\n </div>\n `;\n document.body.insertAdjacentHTML('beforeend', menuHtml);\n // 添加菜单样式\n const style = document.createElement('style');\n style.textContent = `\n #ast-context-menu .menu-item {\n padding: 8px 15px;\n cursor: pointer;\n font-size: 14px;\n min-width: 120px;\n }\n #ast-context-menu .menu-item:hover {\n background: #f0f0f0;\n }\n `;\n document.head.appendChild(style);\n // 点击其他地方隐藏菜单\n document.addEventListener('click', function (e) {\n const menu = document.getElementById('ast-context-menu');\n if (menu && menu.style.display === 'block') {\n menu.style.display = 'none';\n }\n });\n // 处理菜单项点击\n const menuElement = document.getElementById('ast-context-menu');\n if (menuElement) {\n menuElement.addEventListener('click', function (e) {\n var _a;\n e.stopPropagation();\n const target = e.target;\n const action = target.dataset.action;\n if (!action)\n return;\n const targetNode = this.targetNode;\n if (!targetNode)\n return;\n // 添加日志记录用户选择的菜单项\n _logger__WEBPACK_IMPORTED_MODULE_1__.logger.debug('用户选择了菜单项:', action);\n switch (action) {\n case 'copy':\n // 复制纯文本内容\n const content = ((_a = targetNode.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '';\n _logger__WEBPACK_IMPORTED_MODULE_1__.logger.debug('复制内容:', content.substring(0, 50) + (content.length > 50 ? '...' : ''));\n (0,_clipboard_clipboard_service__WEBPACK_IMPORTED_MODULE_0__.copyToClipboard)(content);\n break;\n }\n this.style.display = 'none';\n });\n }\n}\n/**\n * 为ESC键添加事件监听器\n */\nfunction setupKeyboardShortcuts() {\n document.addEventListener('keydown', function (e) {\n if (e.key === 'Escape') {\n const menu = document.getElementById('ast-context-menu');\n if (menu && menu.style.display === 'block') {\n menu.style.display = 'none';\n }\n }\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QkFBVSxDQUFDLFdBQVcsMENBQUUsSUFBSSxFQUFFLEtBQUksRUFBRSxDQUFDO29CQUNyRCwyQ0FBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNyRiw2RUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN6QixNQUFNO1lBQ2QsQ0FBQztZQUVELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7QUFDTCxDQUFDO0FBRUQ7O0dBRUc7QUFDSSxTQUFTLHNCQUFzQjtJQUNsQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFVBQVMsQ0FBZ0I7UUFDMUQsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQThCLENBQUM7WUFDdEYsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztZQUNoQyxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL2FzdC1leHBsb3Jlci1oZWxwZXIvLi9zcmMvdWkvY29udGV4dC1tZW51LmNvbXBvbmVudC50cz9hZmFhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5Y+z6ZSu6I+c5Y2V57uE5Lu2XG4gKi9cblxuaW1wb3J0IHsgY29weVRvQ2xpcGJvYXJkIH0gZnJvbSAnLi4vY2xpcGJvYXJkL2NsaXBib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyB0cmVlRXhwYW5kZXIgfSBmcm9tICcuL3RyZWUtZXhwYW5kZXIuc2VydmljZSc7XG5cbi8vIOiHquWumuS5ieexu+Wei++8jOaJqeWxlUhUTUxFbGVtZW50XG5pbnRlcmZhY2UgQ29udGV4dE1lbnVFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgIHRhcmdldE5vZGU/OiBIVE1MRWxlbWVudDtcbn1cblxuLyoqXG4gKiDpgJLlvZLlsZXlvIDmjIflrproioLngrnkuIvnmoTmiYDmnInlrZDoioLngrlcbiAqIEBwYXJhbSBub2RlIOimgeWxleW8gOeahOiKgueCuVxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhwYW5kQWxsTm9kZXMobm9kZTogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAvLyDpppblhYjmib7liLDljIXlkKvlvZPliY3oioLngrnnmoTlj6/mipjlj6DoioLngrlcbiAgICBsZXQgdGFyZ2V0Tm9kZSA9IG5vZGU7XG4gICAgd2hpbGUgKHRhcmdldE5vZGUgJiYgIXRhcmdldE5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCdlbnRyeScpKSB7XG4gICAgICAgIHRhcmdldE5vZGUgPSB0YXJnZXROb2RlLnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgfVxuICAgIFxuICAgIGlmICghdGFyZ2V0Tm9kZSkge1xuICAgICAgICBsb2dnZXIuaW5mbygn5pyq5om+5Yiw5Y+v5oqY5Y+g6IqC54K5Jyk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgbG9nZ2VyLmluZm8oJ+aJvuWIsOWPr+aKmOWPoOiKgueCuTonLCB7XG4gICAgICAgIHRhZ05hbWU6IHRhcmdldE5vZGUudGFnTmFtZSxcbiAgICAgICAgY2xhc3NOYW1lOiB0YXJnZXROb2RlLmNsYXNzTmFtZSxcbiAgICAgICAgdGV4dENvbnRlbnQ6IHRhcmdldE5vZGUudGV4dENvbnRlbnQ/LnN1YnN0cmluZygwLCA1MClcbiAgICB9KTtcbiAgICBcbiAgICAvLyDpgJLlvZLlsZXlvIDoioLngrnnmoTlh73mlbBcbiAgICBmdW5jdGlvbiBleHBhbmROb2RlcyhjdXJyZW50Tm9kZTogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgLy8g5aaC5p6c5b2T5YmN6IqC54K55pyq5bGV5byA77yM5YWI5bGV5byA5a6DXG4gICAgICAgIGlmICghY3VycmVudE5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCdvcGVuJykpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4cGFuZEljb24gPSBjdXJyZW50Tm9kZS5xdWVyeVNlbGVjdG9yKCcuZGlzY2xvc3VyZS1hcnJvdycpIHx8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZS5xdWVyeVNlbGVjdG9yKCcuYXJyb3cnKSB8fCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE5vZGUucXVlcnlTZWxlY3RvcignW2NsYXNzKj1cImFycm93XCJdJyk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIChleHBhbmRJY29uICYmIGV4cGFuZEljb24gaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCfngrnlh7vlsZXlvIDoioLngrk6JywgY3VycmVudE5vZGUudGV4dENvbnRlbnQ/LnN1YnN0cmluZygwLCA1MCkpO1xuICAgICAgICAgICAgICAgIGV4cGFuZEljb24uY2xpY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8g562J5b6F5LiA5bCP5q615pe26Ze06K6pRE9N5pu05pawXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgLy8g5p+l5om+5omA5pyJ5pyq5bGV5byA55qE5a2Q6IqC54K5XG4gICAgICAgICAgICBjb25zdCBjaGlsZE5vZGVzID0gQXJyYXkuZnJvbShjdXJyZW50Tm9kZS5xdWVyeVNlbGVjdG9yQWxsKCcuZW50cnk6bm90KC5vcGVuKScpKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKGNoaWxkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDmib7liLAgJHtjaGlsZE5vZGVzLmxlbmd0aH0g5Liq5pyq5bGV5byA55qE5a2Q6IqC54K5YCk7XG4gICAgICAgICAgICAgICAgLy8g6YCS5b2S5bGV5byA5q+P5Liq5a2Q6IqC54K5XG4gICAgICAgICAgICAgICAgY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBleHBhbmROb2RlcyhjaGlsZCBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGluZGV4ICogNTApOyAvLyDmr4/kuKroioLngrnpl7TpmpQgNTBtcyDlsZXlvIDvvIzpgb/lhY3kuIDmrKHmgKfngrnlh7vlpKrlpJpcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwKTtcbiAgICB9XG4gICAgXG4gICAgLy8g5byA5aeL6YCS5b2S5bGV5byAXG4gICAgZXhwYW5kTm9kZXModGFyZ2V0Tm9kZSk7XG59XG5cbi8qKlxuICog5Yib5bu66Ieq5a6a5LmJ5Y+z6ZSu6I+c5Y2VXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb250ZXh0TWVudSgpOiB2b2lkIHtcbiAgICAvLyDmo4Dmn6Xoj5zljZXmmK/lkKblt7Lnu4/lrZjlnKhcbiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhc3QtY29udGV4dC1tZW51XCIpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyDliJvlu7roj5zljZVIVE1MXG4gICAgY29uc3QgbWVudUh0bWwgPSBgXG4gICAgICAgIDxkaXYgaWQ9XCJhc3QtY29udGV4dC1tZW51XCIgc3R5bGU9XCJkaXNwbGF5Om5vbmU7IHBvc2l0aW9uOmZpeGVkOyB6LWluZGV4OjEwMDAwOyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgI2NjYzsgYm94LXNoYWRvdzoycHggMnB4IDVweCByZ2JhKDAsMCwwLDAuMyk7IGJvcmRlci1yYWRpdXM6NHB4OyBwYWRkaW5nOjVweCAwO1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtaXRlbVwiIGRhdGEtYWN0aW9uPVwiY29weVwiPuWkjeWItjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgO1xuICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCBtZW51SHRtbCk7XG4gICAgXG4gICAgLy8g5re75Yqg6I+c5Y2V5qC35byPXG4gICAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgIHN0eWxlLnRleHRDb250ZW50ID0gYFxuICAgICAgICAjYXN0LWNvbnRleHQtbWVudSAubWVudS1pdGVtIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxNXB4O1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgbWluLXdpZHRoOiAxMjBweDtcbiAgICAgICAgfVxuICAgICAgICAjYXN0LWNvbnRleHQtbWVudSAubWVudS1pdGVtOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmMGYwZjA7XG4gICAgICAgIH1cbiAgICBgO1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuXG4gICAgLy8g54K55Ye75YW25LuW5Zyw5pa56ZqQ6JeP6I+c5Y2VXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlOiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGNvbnN0IG1lbnUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXN0LWNvbnRleHQtbWVudScpIGFzIENvbnRleHRNZW51RWxlbWVudCB8IG51bGw7XG4gICAgICAgIGlmIChtZW51ICYmIG1lbnUuc3R5bGUuZGlzcGxheSA9PT0gJ2Jsb2NrJykge1xuICAgICAgICAgICAgbWVudS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgLy8g5aSE55CG6I+c5Y2V6aG554K55Ye7XG4gICAgY29uc3QgbWVudUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXN0LWNvbnRleHQtbWVudScpIGFzIENvbnRleHRNZW51RWxlbWVudDtcbiAgICBpZiAobWVudUVsZW1lbnQpIHtcbiAgICAgICAgbWVudUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbih0aGlzOiBDb250ZXh0TWVudUVsZW1lbnQsIGU6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gdGFyZ2V0LmRhdGFzZXQuYWN0aW9uO1xuICAgICAgICAgICAgaWYgKCFhY3Rpb24pIHJldHVybjtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0Tm9kZSA9IHRoaXMudGFyZ2V0Tm9kZTtcbiAgICAgICAgICAgIGlmICghdGFyZ2V0Tm9kZSkgcmV0dXJuO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyDmt7vliqDml6Xlv5forrDlvZXnlKjmiLfpgInmi6nnmoToj5zljZXpoblcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1Zygn55So5oi36YCJ5oup5LqG6I+c5Y2V6aG5OicsIGFjdGlvbik7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHN3aXRjaChhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjb3B5JzpcbiAgICAgICAgICAgICAgICAgICAgLy8g5aSN5Yi257qv5paH5pys5YaF5a65XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0YXJnZXROb2RlLnRleHRDb250ZW50Py50cmltKCkgfHwgJyc7XG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1Zygn5aSN5Yi25YaF5a65OicsIGNvbnRlbnQuc3Vic3RyaW5nKDAsIDUwKSArIChjb250ZW50Lmxlbmd0aCA+IDUwID8gJy4uLicgOiAnJykpO1xuICAgICAgICAgICAgICAgICAgICBjb3B5VG9DbGlwYm9hcmQoY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICB0aGlzLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLyoqXG4gKiDkuLpFU0PplK7mt7vliqDkuovku7bnm5HlkKzlmahcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldHVwS2V5Ym9hcmRTaG9ydGN1dHMoKTogdm9pZCB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICAgICAgY29uc3QgbWVudSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhc3QtY29udGV4dC1tZW51JykgYXMgQ29udGV4dE1lbnVFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgICAgIGlmIChtZW51ICYmIG1lbnUuc3R5bGUuZGlzcGxheSA9PT0gJ2Jsb2NrJykge1xuICAgICAgICAgICAgICAgIG1lbnUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufSAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///562\n");
/***/ }),
/***/ 610:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _logger_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(361);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _logger_service__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _logger_service__WEBPACK_IMPORTED_MODULE_0__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/**\n * 日志模块入口\n */\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjEwLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0dBRUc7QUFFOEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9hc3QtZXhwbG9yZXItaGVscGVyLy4vc3JjL2xvZ2dlci9pbmRleC50cz9hNDg0Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5pel5b+X5qih5Z2X5YWl5Y+jXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9sb2dnZXIuc2VydmljZSc7ICJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///610\n");
/***/ }),
/***/ 629:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createSettingsUI: () => (/* reexport safe */ _settings_ui_component__WEBPACK_IMPORTED_MODULE_0__.createSettingsUI)\n/* harmony export */ });\n/* harmony import */ var _settings_ui_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(458);\n/**\n * 设置UI组件 - 入口文件\n */\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjI5LmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0dBRUc7QUFFd0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9hc3QtZXhwbG9yZXItaGVscGVyLy4vc3JjL3VpL3NldHRpbmdzLXVpL2luZGV4LnRzPzA3YzciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDorr7nva5VSee7hOS7tiAtIOWFpeWPo+aWh+S7tlxuICovXG5cbmV4cG9ydCB7IGNyZWF0ZVNldHRpbmdzVUkgfSBmcm9tICcuL3NldHRpbmdzLXVpLmNvbXBvbmVudCc7ICJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///629\n");
/***/ }),
/***/ 635:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getSettingsTabStyles: () => (/* binding */ getSettingsTabStyles)\n/* harmony export */ });\n/**\n * 设置标签页组件 - 样式文件\n */\n/**\n * 获取设置标签页的样式\n * @returns 设置标签页的CSS样式\n */\nfunction getSettingsTabStyles() {\n return `\n #ast-settings-modal .setting-item {\n margin-bottom: 16px;\n padding-bottom: 16px;\n border-bottom: 1px solid #f0f0f0;\n }\n \n #ast-settings-modal .setting-item:last-child {\n border-bottom: none;\n margin-bottom: 0;\n padding-bottom: 0;\n }\n \n #ast-settings-modal .setting-item label {\n display: flex;\n align-items: center;\n font-weight: 500;\n cursor: pointer;\n color: #333;\n }\n \n #ast-settings-modal .setting-item input[type=\"checkbox\"] {\n margin-right: 10px;\n width: 18px;\n height: 18px;\n accent-color: #4a90e2;\n }\n \n #ast-settings-modal .description {\n margin: 6px 0 0 28px;\n color: #666;\n font-size: 14px;\n line-height: 1.4;\n }\n `;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjM1LmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7R0FFRztBQUVIOzs7R0FHRztBQUNJLFNBQVMsb0JBQW9CO0lBQ2hDLE9BQU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FrQ04sQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9hc3QtZXhwbG9yZXItaGVscGVyLy4vc3JjL3VpL3NldHRpbmdzLXRhYi9zZXR0aW5ncy10YWIuc3R5bGVzLnRzPzViNGEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDorr7nva7moIfnrb7pobXnu4Tku7YgLSDmoLflvI/mlofku7ZcbiAqL1xuXG4vKipcbiAqIOiOt+WPluiuvue9ruagh+etvumhteeahOagt+W8j1xuICogQHJldHVybnMg6K6+572u5qCH562+6aG155qEQ1NT5qC35byPXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXR0aW5nc1RhYlN0eWxlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgXG4gICAgICAgICNhc3Qtc2V0dGluZ3MtbW9kYWwgLnNldHRpbmctaXRlbSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDE2cHg7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YwZjBmMDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuc2V0dGluZy1pdGVtOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgI2FzdC1zZXR0aW5ncy1tb2RhbCAuc2V0dGluZy1pdGVtIGxhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIGNvbG9yOiAjMzMzO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5zZXR0aW5nLWl0ZW0gaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICAgICAgYWNjZW50LWNvbG9yOiAjNGE5MGUyO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAjYXN0LXNldHRpbmdzLW1vZGFsIC5kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBtYXJnaW46IDZweCAwIDAgMjhweDtcbiAgICAgICAgICAgIGNvbG9yOiAjNjY2O1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgICAgfVxuICAgIGA7XG59ICJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///635\n");
/***/ }),
/***/ 661:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createTabsNavigation: () => (/* binding */ createTabsNavigation)\n/* harmony export */ });\n/**\n * 标签页组件 - 模板文件\n */\n/**\n * 创建标签页导航\n * @returns 标签页导航HTML\n */\nfunction createTabsNavigation() {\n return `\n <div class=\"modal-tabs\">\n <button class=\"tab-button active\" data-tab=\"settings\">设置</button>\n <button class=\"tab-button\" data-tab=\"about\">关于</button>\n </div>\n `;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjYxLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7R0FFRztBQUVIOzs7R0FHRztBQUNJLFNBQVMsb0JBQW9CO0lBQ2hDLE9BQU87Ozs7O0tBS04sQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9hc3QtZXhwbG9yZXItaGVscGVyLy4vc3JjL3VpL3RhYnMvdGFicy50ZW1wbGF0ZS50cz9iMzg4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5qCH562+6aG157uE5Lu2IC0g5qih5p2/5paH5Lu2XG4gKi9cblxuLyoqXG4gKiDliJvlu7rmoIfnrb7pobXlr7zoiKpcbiAqIEByZXR1cm5zIOagh+etvumhteWvvOiIqkhUTUxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRhYnNOYXZpZ2F0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLXRhYnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0YWItYnV0dG9uIGFjdGl2ZVwiIGRhdGEtdGFiPVwic2V0dGluZ3NcIj7orr7nva48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0YWItYnV0dG9uXCIgZGF0YS10YWI9XCJhYm91dFwiPuWFs+S6jjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICBgO1xufSAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///661\n");
/***/ }),
/***/ 663:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DEFAULT_SETTINGS: () => (/* binding */ DEFAULT_SETTINGS),\n/* harmony export */ applyAllSettings: () => (/* binding */ applyAllSettings),\n/* harmony export */ applyNodeSelectionSetting: () => (/* binding */ applyNodeSelectionSetting),\n/* harmony export */ applyToolbarSetting: () => (/* binding */ applyToolbarSetting),\n/* harmony export */ loadSettings: () => (/* binding */ loadSettings),\n/* harmony export */ notifySettingsChanged: () => (/* binding */ notifySettingsChanged),\n/* harmony export */ saveSettings: () => (/* binding */ saveSettings)\n/* harmony export */ });\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(610);\n/**\n * 设置管理服务\n */\n\n// 默认设置\nconst DEFAULT_SETTINGS = {\n hideToolbar: true\n};\n// 存储键名\nconst STORAGE_KEY = 'JSREI_ast_explorer_helper_settings';\n/**\n * 加载保存的设置\n * @returns 合并后的设置对象\n */\nfunction loadSettings() {\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('开始加载设置...');\n try {\n const savedSettings = localStorage.getItem(STORAGE_KEY);\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('从localStorage获取的原始设置数据:', savedSettings);\n if (savedSettings) {\n const parsedSettings = JSON.parse(savedSettings);\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('从本地存储加载的设置对象:', parsedSettings);\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('hideToolbar值为:', parsedSettings.hideToolbar);\n const mergedSettings = Object.assign(Object.assign({}, DEFAULT_SETTINGS), parsedSettings);\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('合并后的最终设置:', mergedSettings);\n return mergedSettings;\n }\n }\n catch (error) {\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.error('加载设置失败:', error);\n }\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('未找到有效的存储设置,使用默认设置:', DEFAULT_SETTINGS);\n return Object.assign({}, DEFAULT_SETTINGS);\n}\n/**\n * 保存设置到localStorage\n * @param settings 要保存的设置\n */\nfunction saveSettings(settings) {\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('准备保存设置:', settings);\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('hideToolbar值为:', settings.hideToolbar);\n try {\n const settingsJSON = JSON.stringify(settings);\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('序列化后的设置:', settingsJSON);\n localStorage.setItem(STORAGE_KEY, settingsJSON);\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('设置已保存到本地存储,键名:', STORAGE_KEY);\n }\n catch (error) {\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.error('保存设置失败:', error);\n }\n}\n/**\n * 应用隐藏工具栏设置\n * @param hide 是否隐藏\n */\nfunction applyToolbarSetting(hide) {\n try {\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('开始应用工具栏设置, 是否隐藏:', hide);\n // 查找 Toolbar 元素\n // 不再显示调试信息在界面上,仅保留控制台日志\n console.log('🔍 开始应用工具栏设置, 是否隐藏:', hide);\n const waitForToolbar = () => {\n // 首先按ID精确查找(区分大小写)\n const toolbar = document.getElementById('Toolbar');\n console.log('🔍 查找ID为Toolbar的元素结果:', toolbar);\n if (toolbar) {\n console.log('✅ 成功找到Toolbar元素');\n // 操作前记录状态\n console.log('🔍 操作前Toolbar状态:', {\n display: window.getComputedStyle(toolbar).display,\n visibility: window.getComputedStyle(toolbar).visibility\n });\n // 根据设置显示/隐藏\n if (hide) {\n toolbar.style.display = 'none';\n console.log('✅ 已设置Toolbar为隐藏');\n }\n else {\n toolbar.style.display = '';\n console.log('✅ 已设置Toolbar为显示');\n }\n // 操作后记录状态\n console.log('🔍 操作后Toolbar状态:', {\n display: window.getComputedStyle(toolbar).display,\n visibility: window.getComputedStyle(toolbar).visibility\n });\n return true;\n }\n // 查找任何包含\"toolbar\"的元素(不区分大小写)\n const toolbarElements = document.querySelectorAll('[id*=\"toolbar\" i], [class*=\"toolbar\" i]');\n console.log('🔍 查找包含toolbar的元素结果:', toolbarElements.length);\n if (toolbarElements.length > 0) {\n console.log('⚠️ 找到可能的工具栏元素,但ID不是Toolbar');\n Array.from(toolbarElements).forEach((el, index) => {\n const element = el;\n console.log(`🔍 可能的工具栏 ${index}:`, element.tagName, element.id, element.className);\n if (hide) {\n element.style.display = 'none';\n }\n else {\n element.style.display = '';\n }\n });\n return true;\n }\n return false;\n };\n // 如果Toolbar元素立即可用,则直接操作\n if (waitForToolbar()) {\n return;\n }\n // 如果Toolbar不立即可用,则等待一段时间后再次尝试\n console.log('⚠️ Toolbar元素不立即可用,将在200ms后重试');\n // 设置延迟定时器等待DOM可能的变化\n setTimeout(() => {\n console.log('🔍 开始第二次尝试查找Toolbar');\n if (!waitForToolbar()) {\n console.log('❌ 在第二次尝试后仍未找到Toolbar元素');\n // 最后一次尝试 - 查找页面顶部的任何固定元素\n const fixedTopElements = Array.from(document.querySelectorAll('*')).filter(el => {\n try {\n const style = window.getComputedStyle(el);\n return style.position === 'fixed' &&\n (style.top === '0px' || parseInt(style.top || '100') < 10) &&\n parseInt(style.height || '0') < 100;\n }\n catch (e) {\n return false;\n }\n });\n console.log('🔍 找到的顶部固定元素:', fixedTopElements.length);\n if (fixedTopElements.length > 0) {\n fixedTopElements.forEach((el, i) => {\n const element = el;\n console.log(`🔍 顶部固定元素 ${i}:`, element.tagName, element.id, element.className);\n if (hide) {\n element.style.display = 'none';\n }\n else {\n element.style.display = '';\n }\n });\n }\n }\n }, 200);\n }\n catch (error) {\n console.error('❌ 应用工具栏设置时出错:', error);\n }\n}\n/**\n * 启用节点选择功能 (现在始终启用)\n */\nfunction applyNodeSelectionSetting() {\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('节点选择功能已内置,无需额外启用');\n}\n/**\n * 应用所有设置\n */\nfunction applyAllSettings(settings) {\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('准备应用所有设置:', settings);\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('hideToolbar设置值:', settings.hideToolbar);\n applyToolbarSetting(settings.hideToolbar);\n // 始终启用节点选择功能\n applyNodeSelectionSetting();\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('所有设置已应用完成');\n}\n/**\n * 发布设置变更事件\n */\nfunction notifySettingsChanged() {\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('准备发布设置变更事件...');\n const settings = loadSettings();\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('当前加载的设置:', settings);\n const event = new CustomEvent('ast-explorer-helper-settings-changed', {\n detail: settings\n });\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('创建自定义事件, detail:', event.detail);\n document.dispatchEvent(event);\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.info('设置已变更,已发布通知事件', settings);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7O0dBRUc7QUFDSSxTQUFTLHlCQUF5QjtJQUNyQywyQ0FBTSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFFRDs7R0FFRztBQUNJLFNBQVMsZ0JBQWdCLENBQUMsUUFBa0I7SUFDL0MsMkNBQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLDJDQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUV0RCxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUMsYUFBYTtJQUNiLHlCQUF5QixFQUFFLENBQUM7SUFFNUIsMkNBQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVEOztHQUVHO0FBQ0ksU0FBUyxxQkFBcUI7SUFDakMsMkNBQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFOUIsTUFBTSxRQUFRLEdBQUcsWUFBWSxFQUFFLENBQUM7SUFDaEMsMkNBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRW5DLE1BQU0sS0FBSyxHQUFHLElBQUksV0FBVyxDQUFDLHNDQUFzQyxFQUFFO1FBQ2xFLE1BQU0sRUFBRSxRQUFRO0tBQ25CLENBQUMsQ0FBQztJQUVILDJDQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTlCLDJDQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMzQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYXN0LWV4cGxvcmVyLWhlbHBlci8uL3NyYy9zZXR0aW5ncy9zZXR0aW5ncy5zZXJ2aWNlLnRzP2U0YjAiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDorr7nva7nrqHnkIbmnI3liqFcbiAqL1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi9sb2dnZXInO1xuXG4vLyDlrprkuYnorr7nva7pobnlj4rlhbbpu5jorqTlgLxcbmV4cG9ydCBpbnRlcmZhY2UgU2V0dGluZ3Mge1xuICAgIGhpZGVUb29sYmFyOiBib29sZWFuO1xufVxuXG4vLyDpu5jorqTorr7nva5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NFVFRJTkdTOiBTZXR0aW5ncyA9IHtcbiAgICBoaWRlVG9vbGJhcjogdHJ1ZVxufTtcblxuLy8g5a2Y5YKo6ZSu5ZCNXG5jb25zdCBTVE9SQUdFX0tFWSA9ICdKU1JFSV9hc3RfZXhwbG9yZXJfaGVscGVyX3NldHRpbmdzJztcblxuLyoqXG4gKiDliqDovb3kv53lrZjnmoTorr7nva5cbiAqIEByZXR1cm5zIOWQiOW5tuWQjueahOiuvue9ruWvueixoVxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZFNldHRpbmdzKCk6IFNldHRpbmdzIHtcbiAgICBsb2dnZXIuZGVidWcoJ+W8gOWni+WKoOi9veiuvue9ri4uLicpO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHNhdmVkU2V0dGluZ3MgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX0tFWSk7XG4gICAgICAgIGxvZ2dlci5kZWJ1Zygn5LuObG9jYWxTdG9yYWdl6I635Y+W55qE5Y6f5aeL6K6+572u5pWw5o2uOicsIHNhdmVkU2V0dGluZ3MpO1xuICAgICAgICBcbiAgICAgICAgaWYgKHNhdmVkU2V0dGluZ3MpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZFNldHRpbmdzID0gSlNPTi5wYXJzZShzYXZlZFNldHRpbmdzKTtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1Zygn5LuO5pys5Zyw5a2Y5YKo5Yqg6L2955qE6K6+572u5a+56LGhOicsIHBhcnNlZFNldHRpbmdzKTtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnaGlkZVRvb2xiYXLlgLzkuLo6JywgcGFyc2VkU2V0dGluZ3MuaGlkZVRvb2xiYXIpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBtZXJnZWRTZXR0aW5ncyA9IHsgLi4uREVGQVVMVF9TRVRUSU5HUywgLi4ucGFyc2VkU2V0dGluZ3MgfTtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1Zygn5ZCI5bm25ZCO55qE5pyA57uI6K6+572uOicsIG1lcmdlZFNldHRpbmdzKTtcbiAgICAgICAgICAgIHJldHVybiBtZXJnZWRTZXR0aW5ncztcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcign5Yqg6L296K6+572u5aSx6LSlOicsIGVycm9yKTtcbiAgICB9XG4gICAgXG4gICAgbG9nZ2VyLmRlYnVnKCfmnKrmib7liLDmnInmlYjnmoTlrZjlgqjorr7nva7vvIzkvb/nlKjpu5jorqTorr7nva46JywgREVGQVVMVF9TRVRUSU5HUyk7XG4gICAgcmV0dXJuIHsgLi4uREVGQVVMVF9TRVRUSU5HUyB9O1xufVxuXG4vKipcbiAqIOS/neWtmOiuvue9ruWIsGxvY2FsU3RvcmFnZVxuICogQHBhcmFtIHNldHRpbmdzIOimgeS/neWtmOeahOiuvue9rlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2F2ZVNldHRpbmdzKHNldHRpbmdzOiBTZXR0aW5ncyk6IHZvaWQge1xuICAgIGxvZ2dlci5kZWJ1Zygn5YeG5aSH5L+d5a2Y6K6+572uOicsIHNldHRpbmdzKTtcbiAgICBsb2dnZXIuZGVidWcoJ2hpZGVUb29sYmFy5YC85Li6OicsIHNldHRpbmdzLmhpZGVUb29sYmFyKTtcbiAgICBcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBzZXR0aW5nc0pTT04gPSBKU09OLnN0cmluZ2lmeShzZXR0aW5ncyk7XG4gICAgICAgIGxvZ2dlci5kZWJ1Zygn5bqP5YiX5YyW5ZCO55qE6K6+572uOicsIHNldHRpbmdzSlNPTik7XG4gICAgICAgIFxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX0tFWSwgc2V0dGluZ3NKU09OKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKCforr7nva7lt7Lkv53lrZjliLDmnKzlnLDlrZjlgqjvvIzplK7lkI06JywgU1RPUkFHRV9LRVkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcign5L+d5a2Y6K6+572u5aSx6LSlOicsIGVycm9yKTtcbiAgICB9XG59XG5cbi8qKlxuICog5bqU55So6ZqQ6JeP5bel5YW35qCP6K6+572uXG4gKiBAcGFyYW0gaGlkZSDmmK/lkKbpmpDol49cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5VG9vbGJhclNldHRpbmcoaGlkZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1Zygn5byA5aeL5bqU55So5bel5YW35qCP6K6+572uLCDmmK/lkKbpmpDol486JywgaGlkZSk7XG4gICAgICAgIFxuICAgICAgICAvLyDmn6Xmib4gVG9vbGJhciDlhYPntKBcbiAgICAgICAgLy8g5LiN5YaN5pi+56S66LCD6K+V5L+h5oGv5Zyo55WM6Z2i5LiK77yM5LuF5L+d55WZ5o6n5Yi25Y+w5pel5b+XXG4gICAgICAgIGNvbnNvbGUubG9nKCfwn5SNIOW8gOWni+W6lOeUqOW3peWFt+agj+iuvue9riwg5piv5ZCm6ZqQ6JePOicsIGhpZGUpO1xuICAgICAgICBcbiAgICAgICAgY29uc3Qgd2FpdEZvclRvb2xiYXIgPSAoKSA9PiB7XG4gICAgICAgICAgICAvLyDpppblhYjmjIlJROeyvuehruafpeaJvu+8iOWMuuWIhuWkp+Wwj+WGme+8iVxuICAgICAgICAgICAgY29uc3QgdG9vbGJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdUb29sYmFyJyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn8J+UjSDmn6Xmib5JROS4ulRvb2xiYXLnmoTlhYPntKDnu5Pmnpw6JywgdG9vbGJhcik7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICh0b29sYmFyKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+KchSDmiJDlip/mib7liLBUb29sYmFy5YWD57SgJyk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLy8g5pON5L2c5YmN6K6w5b2V54q25oCBXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ/CflI0g5pON5L2c5YmNVG9vbGJhcueKtuaAgTonLCB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRvb2xiYXIpLmRpc3BsYXksXG4gICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRvb2xiYXIpLnZpc2liaWxpdHlcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvLyDmoLnmja7orr7nva7mmL7npLov6ZqQ6JePXG4gICAgICAgICAgICAgICAgaWYgKGhpZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9vbGJhci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygn4pyFIOW3suiuvue9rlRvb2xiYXLkuLrpmpDol48nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0b29sYmFyLnN0eWxlLmRpc3BsYXkgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+KchSDlt7Lorr7nva5Ub29sYmFy5Li65pi+56S6Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIOaTjeS9nOWQjuiusOW9leeKtuaAgVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCfwn5SNIOaTjeS9nOWQjlRvb2xiYXLnirbmgIE6Jywge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0b29sYmFyKS5kaXNwbGF5LFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0b29sYmFyKS52aXNpYmlsaXR5XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIOafpeaJvuS7u+S9leWMheWQq1widG9vbGJhclwi55qE5YWD57Sg77yI5LiN5Yy65YiG5aSn5bCP5YaZ77yJXG4gICAgICAgICAgICBjb25zdCB0b29sYmFyRWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaWQqPVwidG9vbGJhclwiIGldLCBbY2xhc3MqPVwidG9vbGJhclwiIGldJyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn8J+UjSDmn6Xmib7ljIXlkKt0b29sYmFy55qE5YWD57Sg57uT5p6cOicsIHRvb2xiYXJFbGVtZW50cy5sZW5ndGgpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAodG9vbGJhckVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygn4pqg77iPIOaJvuWIsOWPr+iDveeahOW3peWFt+agj+WFg+e0oO+8jOS9hklE5LiN5pivVG9vbGJhcicpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIEFycmF5LmZyb20odG9vbGJhckVsZW1lbnRzKS5mb3JFYWNoKChlbCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGVsIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhg8J+UjSDlj6/og73nmoTlt6XlhbfmoI8gJHtpbmRleH06YCwgZWxlbWVudC50YWdOYW1lLCBlbGVtZW50LmlkLCBlbGVtZW50LmNsYXNzTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBpZiAoaGlkZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAgLy8g5aaC5p6cVG9vbGJhcuWFg+e0oOeri+WNs+WPr+eUqO+8jOWImeebtOaOpeaTjeS9nFxuICAgICAgICBpZiAod2FpdEZvclRvb2xiYXIoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyDlpoLmnpxUb29sYmFy5LiN56uL5Y2z5Y+v55So77yM5YiZ562J5b6F5LiA5q615pe26Ze05ZCO5YaN5qyh5bCd6K+VXG4gICAgICAgIGNvbnNvbGUubG9nKCfimqDvuI8gVG9vbGJhcuWFg+e0oOS4jeeri+WNs+WPr+eUqO+8jOWwhuWcqDIwMG1z5ZCO6YeN6K+VJyk7XG4gICAgICAgIFxuICAgICAgICAvLyDorr7nva7lu7bov5/lrprml7blmajnrYnlvoVET03lj6/og73nmoTlj5jljJZcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn8J+UjSDlvIDlp4vnrKzkuozmrKHlsJ3or5Xmn6Xmib5Ub29sYmFyJyk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICghd2FpdEZvclRvb2xiYXIoKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCfinYwg5Zyo56ys5LqM5qyh5bCd6K+V5ZCO5LuN5pyq5om+5YiwVG9vbGJhcuWFg+e0oCcpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIOacgOWQjuS4gOasoeWwneivlSAtIOafpeaJvumhtemdoumhtumDqOeahOS7u+S9leWbuuWumuWFg+e0oFxuICAgICAgICAgICAgICAgIGNvbnN0IGZpeGVkVG9wRWxlbWVudHMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyonKSkuZmlsdGVyKGVsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnICYmIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHlsZS50b3AgPT09ICcwcHgnIHx8IHBhcnNlSW50KHN0eWxlLnRvcCB8fCAnMTAwJykgPCAxMCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUludChzdHlsZS5oZWlnaHQgfHwgJzAnKSA8IDEwMDtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ/CflI0g5om+5Yiw55qE6aG26YOo5Zu65a6a5YWD57SgOicsIGZpeGVkVG9wRWxlbWVudHMubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAoZml4ZWRUb3BFbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpeGVkVG9wRWxlbWVudHMuZm9yRWFjaCgoZWwsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBlbCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGDwn5SNIOmhtumDqOWbuuWumuWFg+e0oCAke2l9OmAsIGVsZW1lbnQudGFnTmFtZSwgZWxlbWVudC5pZCwgZWxlbWVudC5jbGFzc05hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGlkZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMjAwKTtcbiAgICAgICAgXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcign4p2MIOW6lOeUqOW3peWFt+agj+iuvue9ruaXtuWHuumUmTonLCBlcnJvcik7XG4gICAgfVxufVxuXG4vKipcbiAqIOWQr+eUqOiKgueCuemAieaLqeWKn+iDvSAo546w5Zyo5aeL57uI5ZCv55SoKVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlOb2RlU2VsZWN0aW9uU2V0dGluZygpOiB2b2lkIHtcbiAgICBsb2dnZXIuZGVidWcoJ+iKgueCuemAieaLqeWKn+iDveW3suWGhee9ru+8jOaXoOmcgOmineWkluWQr+eUqCcpO1xufVxuXG4vKipcbiAqIOW6lOeUqOaJgOacieiuvue9rlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlBbGxTZXR0aW5ncyhzZXR0aW5nczogU2V0dGluZ3MpOiB2b2lkIHtcbiAgICBsb2dnZXIuZGVidWcoJ+WHhuWkh+W6lOeUqOaJgOacieiuvue9rjonLCBzZXR0aW5ncyk7XG4gICAgbG9nZ2VyLmRlYnVnKCdoaWRlVG9vbGJhcuiuvue9ruWAvDonLCBzZXR0aW5ncy5oaWRlVG9vbGJhcik7XG4gICAgXG4gICAgYXBwbHlUb29sYmFyU2V0dGluZyhzZXR0aW5ncy5oaWRlVG9vbGJhcik7XG4gICAgLy8g5aeL57uI5ZCv55So6IqC54K56YCJ5oup5Yqf6IO9XG4gICAgYXBwbHlOb2RlU2VsZWN0aW9uU2V0dGluZygpO1xuICAgIFxuICAgIGxvZ2dlci5kZWJ1Zygn5omA5pyJ6K6+572u5bey5bqU55So5a6M5oiQJyk7XG59XG5cbi8qKlxuICog5Y+R5biD6K6+572u5Y+Y5pu05LqL5Lu2XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3RpZnlTZXR0aW5nc0NoYW5nZWQoKTogdm9pZCB7XG4gICAgbG9nZ2VyLmRlYnVnKCflh4blpIflj5HluIPorr7nva7lj5jmm7Tkuovku7YuLi4nKTtcbiAgICBcbiAgICBjb25zdCBzZXR0aW5ncyA9IGxvYWRTZXR0aW5ncygpO1xuICAgIGxvZ2dlci5kZWJ1Zygn5b2T5YmN5Yqg6L2955qE6K6+572uOicsIHNldHRpbmdzKTtcbiAgICBcbiAgICBjb25zdCBldmVudCA9IG5ldyBDdXN0b21FdmVudCgnYXN0LWV4cGxvcmVyLWhlbHBlci1zZXR0aW5ncy1jaGFuZ2VkJywge1xuICAgICAgICBkZXRhaWw6IHNldHRpbmdzXG4gICAgfSk7XG4gICAgXG4gICAgbG9nZ2VyLmRlYnVnKCfliJvlu7roh6rlrprkuYnkuovku7YsIGRldGFpbDonLCBldmVudC5kZXRhaWwpO1xuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgIFxuICAgIGxvZ2dlci5pbmZvKCforr7nva7lt7Llj5jmm7TvvIzlt7Llj5HluIPpgJrnn6Xkuovku7YnLCBzZXR0aW5ncyk7XG59ICJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///663\n");
/***/ }),
/***/ 707:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createAboutTabContent: () => (/* binding */ createAboutTabContent),\n/* harmony export */ getRepoStatsFromCache: () => (/* binding */ getRepoStatsFromCache)\n/* harmony export */ });\n/**\n * 关于标签页组件 - 模板文件\n */\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n/**\n * 创建关于标签页内容\n * @returns 关于标签页的HTML内容\n */\nfunction createAboutTabContent() {\n // 获取缓存的仓库数据\n const repoStats = getRepoStatsFromCache();\n return `\n <div class=\"tab-content\" id=\"about-tab\">\n <div class=\"about-content\">\n <!-- 仓库信息部分 - 增强卡片版 -->\n <section class=\"repo-info-section\">\n <div class=\"repo-card\">\n <div class=\"repo-header\">\n <div class=\"repo-logo\">\n <svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\">\n <path fill=\"currentColor\" d=\"M20.59 12l-3.3-3.3a1 1 0 1 1 1.42-1.4l4 4a1 1 0 0 1 0 1.4l-4 4a1 1 0 0 1-1.42-1.4l3.3-3.3zM3.4 12l3.3 3.3a1 1 0 0 1-1.42 1.4l-4-4a1 1 0 0 1 0-1.4l4-4a1 1 0 0 1 1.42 1.4L3.4 12z\"/>\n </svg>\n </div>\n \n <h4>AST Explorer 助手</h4>\n <span class=\"repo-badge\">增强工具</span>\n <p>一款提升AST Explorer使用体验的增强工具</p>\n </div>\n \n <div class=\"repo-stats\">\n <div class=\"repo-link-wrapper\">\n <a href=\"https://github.com/JSREI/ast-explorer-helper\" target=\"_blank\" class=\"repo-link\">\n <svg class=\"github-icon\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n <path fill-rule=\"evenodd\" d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z\"></path>\n </svg>\n GitHub 仓库\n </a>\n <a href=\"https://github.com/JSREI/ast-explorer-helper/stargazers\" target=\"_blank\" class=\"star-button\">\n <svg class=\"star-icon\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n <path fill-rule=\"evenodd\" d=\"M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25z\"></path>\n </svg>\n 支持一下\n </a>\n </div>\n \n <div class=\"github-stats\">\n <a href=\"https://github.com/JSREI/ast-explorer-helper/stargazers\" target=\"_blank\" class=\"stat-item star-stat\" title=\"GitHub Star数 - 点击查看详情\">\n <svg class=\"stat-icon\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n <path fill-rule=\"evenodd\" d=\"M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25z\"></path>\n </svg>\n <span>${repoStats.stars || '暂未获取'}</span>\n <span class=\"stat-label\">Stars</span>\n </a>\n <a href=\"https://github.com/JSREI/ast-explorer-helper/forks\" target=\"_blank\" class=\"stat-item fork-stat\" title=\"GitHub Fork数 - 点击查看详情\">\n <svg class=\"stat-icon\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n <path fill-rule=\"evenodd\" d=\"M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z\"></path>\n </svg>\n <span>${repoStats.forks || '暂未获取'}</span>\n <span class=\"stat-label\">Forks</span>\n </a>\n <a href=\"https://github.com/JSREI/ast-explorer-helper/issues\" target=\"_blank\" class=\"stat-item issue-stat\" title=\"GitHub Issue数 - 点击查看详情\">\n <svg class=\"stat-icon\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n <path fill-rule=\"evenodd\" d=\"M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm9 3a1 1 0 11-2 0 1 1 0 012 0zm-.25-6.25a.75.75 0 00-1.5 0v3.5a.75.75 0 001.5 0v-3.5z\"></path>\n </svg>\n <span>${repoStats.issues || '暂未获取'}</span>\n <span class=\"stat-label\">Issues</span>\n </a>\n <a href=\"https://github.com/JSREI/ast-explorer-helper/commits/main\" target=\"_blank\" class=\"stat-item update-stat\" title=\"最近更新时间 - 点击查看提交历史\">\n <svg class=\"stat-icon\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n <path fill-rule=\"evenodd\" d=\"M1.643 3.143L.427 1.927A.25.25 0 000 2.104V5.75c0 .138.112.25.25.25h3.646a.25.25 0 00.177-.427L2.715 4.215a6.5 6.5 0 11-1.18 4.458.75.75 0 10-1.493.154 8.001 8.001 0 101.6-5.684zM7.75 4a.75.75 0 01.75.75v2.992l2.028.812a.75.75 0 01-.557 1.392l-2.5-1A.75.75 0 017 8.25v-3.5A.75.75 0 017.75 4z\"></path>\n </svg>\n <span>${repoStats.updatedAt || '暂未获取'}</span>\n <span class=\"stat-label\">更新于</span>\n </a>\n </div>\n </div>\n </div>\n </section>\n \n <!-- 组织信息部分 - 增强版 -->\n <section class=\"org-info-section\">\n <div class=\"org-card\">\n <div class=\"org-header\">\n <div class=\"org-logo\">\n <img src=\"https://avatars.githubusercontent.com/u/118125754?s=200&v=4\" alt=\"JSREI组织Logo\" class=\"jsrei-logo\" width=\"64\" height=\"64\">\n <span class=\"org-badge\">开源组织</span>\n </div>\n <h4 class=\"section-title\">关于JSREI</h4>\n </div>\n \n <div class=\"org-content\">\n <div class=\"org-description\">\n <p>JSREI (JavaScript Reverse Engineering Initiative) 是一个专注于JavaScript逆向工程的开源组织,致力于提供优质的逆向工程工具和教程,帮助开发者更好地理解和分析JavaScript代码。</p>\n </div>\n \n <div class=\"org-features\">\n <div class=\"feature-item\">\n <div class=\"feature-icon\">\n <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\">\n <path fill=\"currentColor\" d=\"M12 2L1 21h22L12 2zm0 4l7.53 13H4.47L12 6zm-1 3v4h2V9h-2zm0 6v2h2v-2h-2z\"/>\n </svg>\n </div>\n <div class=\"feature-text\">逆向工具</div>\n </div>\n \n <div class=\"feature-item\">\n <div class=\"feature-icon\">\n <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\">\n <path fill=\"currentColor\" d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-5 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z\"/>\n </svg>\n </div>\n <div class=\"feature-text\">技术教程</div>\n </div>\n \n <div class=\"feature-item\">\n <div class=\"feature-icon\">\n <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\">\n <path fill=\"currentColor\" d=\"M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z\"/>\n </svg>\n </div>\n <div class=\"feature-text\">代码分析</div>\n </div>\n </div>\n </div>\n \n <div class=\"org-actions\">\n <a href=\"https://github.com/JSREI\" target=\"_blank\" class=\"org-action-button fixed-button\">\n <span class=\"button-icon\">\n <svg class=\"github-icon\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n <path fill-rule=\"evenodd\" d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z\"></path>\n </svg>\n </span>\n <span class=\"button-text\">查看更多JSREI项目</span>\n </a>\n </div>\n </div>\n </section>\n \n <!-- 交流群信息部分 - 卡片式设计 -->\n <section class=\"community-section\">\n <div class=\"community-card\">\n <div class=\"community-header\">\n <div class=\"community-icon\">\n <svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\">\n <path fill=\"currentColor\" d=\"M12 2c1.35 0 2.6.45 3.6 1.2L12 7.8 8.4 3.2C9.4 2.45 10.65 2 12 2m9 15c0 1.66-1.34 3-3 3H6c-1.66 0-3-1.34-3-3v-4.85c0-.3.15-.57.4-.74L12 5l8.6 6.41c.25.17.4.44.4.74V17z\"/>\n </svg>\n </div>\n \n <h4 class=\"section-title\">逆向技术交流群</h4>\n <p>加入我们的技术交流社区,分享经验与知识</p>\n </div>\n \n <div class=\"qr-code-container\">\n <!-- 微信部分 -->\n <div class=\"qr-section\">\n <div class=\"qr-section-title wechat\">\n <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\">\n <path fill=\"currentColor\" d=\"M8.2 13.3c-.5 0-.9-.4-.9-.9s.4-.9.9-.9.9.4.9.9-.4.9-.9.9m4.9 0c-.5 0-.9-.4-.9-.9s.4-.9.9-.9.9.4.9.9-.4.9-.9.9m3-6.5c-3.6 0-6.5 2.4-6.5 5.4 0 .5.1 1 .2 1.5-2.3-.1-4.6-1.2-6-2.9a1.61 1.61 0 0 0-.2.8c0 1 .9 1.9 2.2 2.4-.8 0-1.5-.1-2.1-.4 0 1.4 2 2.5 3.6 2.8-.4.1-.9.2-1.4.2-.3 0-.5 0-.8-.1.4 1.1 1.4 1.9 2.6 2-1 .7-2.2 1.1-3.6 1.1H3c1.3.8 2.8 1.3 4.4 1.3 5.3 0 8.2-4.1 8.2-7.6v-.3c.6-.4 1-1 1.4-1.6-.5.2-1 .4-1.6.5.6-.4 1-1 1.2-1.7-.6.3-1.2.6-1.9.7\"/></path>\n </svg>\n 微信交流群\n </div>\n \n <div class=\"qr-item\">\n <p>扫码加入逆向技术微信交流群:</p>\n <div class=\"qr-code\">\n <img src=\"https://cdn.jsdelivr.net/gh/JSREI/.github/profile/README.assets/image-20241016230653669.png\" alt=\"逆向技术微信交流群二维码\">\n </div>\n </div>\n \n <div class=\"qr-item\">\n <p>如群二维码过期,可以加我个人微信,发送【逆向群】拉你进群:</p>\n <div class=\"qr-code\">\n <img src=\"https://cdn.jsdelivr.net/gh/JSREI/.github/profile/README.assets/image-20231030132026541-7614065.png\" alt=\"个人微信二维码\">\n </div>\n </div>\n </div>\n \n <!-- QQ群部分 -->\n <div class=\"qr-section\">\n <div class=\"qr-section-title qq\">\n <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\">\n <path fill=\"currentColor\" d=\"M12.003 2c-5.514 0-9.998 4.484-9.998 9.997 0 5.515 4.484 10 9.998 10 5.515 0 10-4.485 10-10 0-5.513-4.485-9.997-10-9.997zm0 1.5c4.69 0 8.5 3.807 8.5 8.497 0 4.691-3.81 8.5-8.5 8.5-4.689 0-8.498-3.809-8.498-8.5 0-4.69 3.809-8.497 8.498-8.497zm-0.747 4.562v-0.002c-0.325 0.038-0.913 0.197-1.707 1.063-0.895 0.978-0.845 2.032-0.845 2.032s-1.289 0.184-1.677 1.904c-0.388 1.721-0.123 2.094-0.123 2.094s-0.214 1.577 0.735 0.587c0.303-0.316 0.499-1.153 0.499-1.153l0.789 1.781c-0.881 1.86-0.789 2.299-0.789 2.299s-0.123 0.883 0.643 0.205c0.766-0.678 1.219-1.977 1.219-1.977l0.214 0.92c-0.123 1.565 0.152 1.721 0.152 1.721s0.245 0.431 0.583-0.147c0.338-0.577 0.245-1.351 0.245-1.351l0.797-0.059c0.919 1.644 1.676 0.92 1.676 0.92s0.367-0.516-0.275-1.433l0.613-0.489c1.188 0.82 1.92-0.059 1.92-0.059s0.275-0.723-1.188-1.062l0.183-0.723c1.554-0.147 1.432-1.062 1.432-1.062s-0.061-0.75-1.432-0.75l-0.245-0.791c1.31-0.489 1.127-1.202 1.127-1.202s-0.214-0.606-1.188-0.518l-0.735-1.202c0.919-0.577 0.674-1.202 0.674-1.202s-0.367-0.518-1.188 0.059l-1.188-1.202c0.613-0.82 0.214-1.202 0.214-1.202s-0.521-0.321-1.127 0.518l-0.919-0.791c0.306-0.82-0.152-1.062-0.152-1.062s-0.583-0.205-0.766 0.791l-0.919-0.518c0.214-0.978-0.367-1.062-0.367-1.062z\"/>\n </svg>\n QQ交流群\n </div>\n \n <div class=\"qr-item\">\n <p><a href=\"https://qm.qq.com/q/YfdB3w3OEY\" target=\"_blank\" class=\"qq-link\">\n <svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\">\n <path fill=\"currentColor\" d=\"M14 3v2h3.59l-9.83 9.83-1.41-1.41L16.17 3H14V1h6v6h-2V3.41l-9.83 9.83 1.41 1.41L20.41 4H24v2h2V0h-6v2h-6z\"/>\n </svg>\n 点此直接加入\n </a> 或扫码加入QQ交流群:</p>\n <div class=\"qr-code\">\n <img src=\"https://cdn.jsdelivr.net/gh/JSREI/.github/profile/README.assets/jsrei-qq-group.jpg\" alt=\"QQ交流群二维码\">\n </div>\n </div>\n </div>\n \n <!-- Telegram部分 -->\n <div class=\"qr-section\">\n <div class=\"qr-section-title telegram\">\n <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\">\n <path fill=\"currentColor\" d=\"M9.78 18.65l.28-4.23 7.68-6.92c.34-.31-.07-.46-.52-.19L7.74 13.3 3.64 12c-.88-.25-.89-.86.2-1.3l15.97-6.16c.73-.33 1.43.18 1.15 1.3l-2.72 12.81c-.19.91-.74 1.13-1.5.71L12.6 16.3l-1.99 1.93c-.23.23-.42.42-.83.42z\"></path>\n </svg>\n Telegram 交流群\n </div>\n \n <div class=\"qr-item\">\n <p><a href=\"https://t.me/jsreijsrei\" target=\"_blank\" class=\"tg-link\">\n <svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\">\n <path fill=\"currentColor\" d=\"M14 3v2h3.59l-9.83 9.83-1.41-1.41L16.17 3H14V1h6v6h-2V3.41l-9.83 9.83 1.41 1.41L20.41 4H24v2h2V0h-6v2h-6z\"/>\n </svg>\n 点此直接加入\n </a> 或扫码加入 TG 交流群:</p>\n <div class=\"qr-code\">\n <img src=\"https://cdn.jsdelivr.net/gh/JSREI/.github/profile/README.assets/image-20241016231143315.png\" alt=\"TG交流群二维码\">\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n </div>\n </div>\n `;\n}\n/**\n * 获取仓库统计信息的缓存数据\n * 如果缓存不存在或已过期,则返回空数据并触发异步更新\n */\nfunction getRepoStatsFromCache() {\n const CACHE_KEY = 'JSREI_repo_stats';\n const CACHE_EXPIRY = 60 * 60 * 1000; // 1小时缓存\n // 空数据对象,表示未获取到\n const emptyStats = {\n stars: null,\n forks: null,\n issues: null,\n updatedAt: null\n };\n // 尝试从localStorage获取缓存数据\n const cachedData = localStorage.getItem(CACHE_KEY);\n let repoStats = Object.assign({}, emptyStats);\n if (cachedData) {\n try {\n const parsedData = JSON.parse(cachedData);\n const now = new Date().getTime();\n // 检查缓存是否有效\n if (parsedData && parsedData.timestamp && (now - parsedData.timestamp) < CACHE_EXPIRY) {\n repoStats = parsedData.data;\n return repoStats;\n }\n }\n catch (error) {\n console.error('解析仓库统计缓存数据失败:', error);\n return emptyStats; // 返回空数据\n }\n }\n // 如果没有有效缓存,异步获取新数据\n try {\n fetchRepoStats().then(data => {\n if (data) {\n // 缓存新数据\n localStorage.setItem(CACHE_KEY, JSON.stringify({\n timestamp: new Date().getTime(),\n data: data\n }));\n // 如果页面已加载,更新DOM\n updateRepoStatsInDOM(data);\n }\n else {\n // API返回空数据,更新DOM显示未获取状态\n updateRepoStatsInDOM(emptyStats);\n }\n }).catch(err => {\n console.error('获取仓库统计数据失败:', err);\n // API调用出错,更新DOM显示未获取状态\n updateRepoStatsInDOM(emptyStats);\n });\n }\n catch (error) {\n console.error('启动仓库统计更新失败:', error);\n return emptyStats; // 返回空数据\n }\n return repoStats;\n}\n/**\n * 从GitHub API获取仓库统计数据\n */\nfunction fetchRepoStats() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n // 给API请求添加超时限制\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), 5000); // 5秒超时\n const response = yield fetch('https://api.github.com/repos/JSREI/ast-explorer-helper', {\n signal: controller.signal,\n headers: {\n 'Accept': 'application/vnd.github.v3+json'\n }\n });\n clearTimeout(timeoutId);\n if (!response.ok) {\n throw new Error(`GitHub API错误: ${response.status}`);\n }\n const data = yield response.json();\n // 格式化日期\n const updatedDate = new Date(data.updated_at);\n const formattedDate = `${updatedDate.getFullYear()}-${String(updatedDate.getMonth() + 1).padStart(2, '0')}-${String(updatedDate.getDate()).padStart(2, '0')}`;\n return {\n stars: data.stargazers_count,\n forks: data.forks_count,\n issues: data.open_issues_count,\n updatedAt: formattedDate\n };\n }\n catch (error) {\n console.error('获取仓库统计数据失败:', error);\n // 返回null表示获取失败\n return null;\n }\n });\n}\n/**\n * 更新DOM中的仓库统计数据\n */\nfunction updateRepoStatsInDOM(data) {\n var _a, _b, _c;\n try {\n const aboutTab = document.getElementById('about-tab');\n if (!aboutTab)\n return;\n // 更新各个统计数据\n const statItems = aboutTab.querySelectorAll('.github-stats .stat-item span');\n if (statItems.length >= 4) {\n statItems[0].textContent = ((_a = data.stars) === null || _a === void 0 ? void 0 : _a.toString()) || '暂未获取';\n statItems[2].textContent = ((_b = data.forks) === null || _b === void 0 ? void 0 : _b.toString()) || '暂未获取';\n statItems[4].textContent = ((_c = data.issues) === null || _c === void 0 ? void 0 : _c.toString()) || '暂未获取';\n statItems[6].textContent = data.updatedAt || '暂未获取';\n }\n }\n catch (error) {\n console.error('更新DOM中的仓库统计数据失败:', error);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RyxXQUFJLENBQUMsTUFBTSwwQ0FBRSxRQUFRLEVBQUUsS0FBSSxNQUFNLENBQUM7WUFDN0QsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQztRQUN4RCxDQUFDO0lBQ0wsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7QUFDTCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYXN0LWV4cGxvcmVyLWhlbHBlci8uL3NyYy91aS9hYm91dC10YWIvYWJvdXQtdGFiLnRlbXBsYXRlLnRzPzA1OGMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDlhbPkuo7moIfnrb7pobXnu4Tku7YgLSDmqKHmnb/mlofku7ZcbiAqL1xuXG4vKipcbiAqIOWIm+W7uuWFs+S6juagh+etvumhteWGheWuuVxuICogQHJldHVybnMg5YWz5LqO5qCH562+6aG155qESFRNTOWGheWuuVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQWJvdXRUYWJDb250ZW50KCk6IHN0cmluZyB7XG4gICAgLy8g6I635Y+W57yT5a2Y55qE5LuT5bqT5pWw5o2uXG4gICAgY29uc3QgcmVwb1N0YXRzID0gZ2V0UmVwb1N0YXRzRnJvbUNhY2hlKCk7XG4gICAgXG4gICAgcmV0dXJuIGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50XCIgaWQ9XCJhYm91dC10YWJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhYm91dC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPCEtLSDku5PlupPkv6Hmga/pg6jliIYgLSDlop7lvLrljaHniYfniYggLS0+XG4gICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJyZXBvLWluZm8tc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwby1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwby1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwby1sb2dvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNMjAuNTkgMTJsLTMuMy0zLjNhMSAxIDAgMSAxIDEuNDItMS40bDQgNGExIDEgMCAwIDEgMCAxLjRsLTQgNGExIDEgMCAwIDEtMS40Mi0xLjRsMy4zLTMuM3pNMy40IDEybDMuMyAzLjNhMSAxIDAgMCAxLTEuNDIgMS40bC00LTRhMSAxIDAgMCAxIDAtMS40bDQtNGExIDEgMCAwIDEgMS40MiAxLjRMMy40IDEyelwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PkFTVCBFeHBsb3JlciDliqnmiYs8L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVwby1iYWRnZVwiPuWinuW8uuW3peWFtzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD7kuIDmrL7mj5DljYdBU1QgRXhwbG9yZXLkvb/nlKjkvZPpqoznmoTlop7lvLrlt6Xlhbc8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcG8tc3RhdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwby1saW5rLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vZ2l0aHViLmNvbS9KU1JFSS9hc3QtZXhwbG9yZXItaGVscGVyXCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJyZXBvLWxpbmtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJnaXRodWItaWNvblwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgZD1cIk04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAwMTYgOGMwLTQuNDItMy41OC04LTgtOHpcIj48L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdpdEh1YiDku5PlupNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL0pTUkVJL2FzdC1leHBsb3Jlci1oZWxwZXIvc3RhcmdhemVyc1wiIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzPVwic3Rhci1idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJzdGFyLWljb25cIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNOCAuMjVhLjc1Ljc1IDAgMDEuNjczLjQxOGwxLjg4MiAzLjgxNSA0LjIxLjYxMmEuNzUuNzUgMCAwMS40MTYgMS4yNzlsLTMuMDQ2IDIuOTcuNzE5IDQuMTkyYS43NS43NSAwIDAxLTEuMDg4Ljc5MUw4IDEyLjM0N2wtMy43NjYgMS45OGEuNzUuNzUgMCAwMS0xLjA4OC0uNzlsLjcyLTQuMTk0TC44MTggNi4zNzRhLjc1Ljc1IDAgMDEuNDE2LTEuMjhsNC4yMS0uNjExTDcuMzI3LjY2OEEuNzUuNzUgMCAwMTggLjI1elwiPjwvcGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg5pSv5oyB5LiA5LiLXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2l0aHViLXN0YXRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vSlNSRUkvYXN0LWV4cGxvcmVyLWhlbHBlci9zdGFyZ2F6ZXJzXCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJzdGF0LWl0ZW0gc3Rhci1zdGF0XCIgdGl0bGU9XCJHaXRIdWIgU3RhcuaVsCAtIOeCueWHu+afpeeci+ivpuaDhVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cInN0YXQtaWNvblwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgZD1cIk04IC4yNWEuNzUuNzUgMCAwMS42NzMuNDE4bDEuODgyIDMuODE1IDQuMjEuNjEyYS43NS43NSAwIDAxLjQxNiAxLjI3OWwtMy4wNDYgMi45Ny43MTkgNC4xOTJhLjc1Ljc1IDAgMDEtMS4wODguNzkxTDggMTIuMzQ3bC0zLjc2NiAxLjk4YS43NS43NSAwIDAxLTEuMDg4LS43OWwuNzItNC4xOTRMLjgxOCA2LjM3NGEuNzUuNzUgMCAwMS40MTYtMS4yOGw0LjIxLS42MTFMNy4zMjcuNjY4QS43NS43NSAwIDAxOCAuMjV6XCI+PC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4ke3JlcG9TdGF0cy5zdGFycyB8fCAn5pqC5pyq6I635Y+WJ308L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXQtbGFiZWxcIj5TdGFyczwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL0pTUkVJL2FzdC1leHBsb3Jlci1oZWxwZXIvZm9ya3NcIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cInN0YXQtaXRlbSBmb3JrLXN0YXRcIiB0aXRsZT1cIkdpdEh1YiBGb3Jr5pWwIC0g54K55Ye75p+l55yL6K+m5oOFXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwic3RhdC1pY29uXCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTUgMy4yNWEuNzUuNzUgMCAxMS0xLjUgMCAuNzUuNzUgMCAwMTEuNSAwem0wIDIuMTIyYTIuMjUgMi4yNSAwIDEwLTEuNSAwdi44NzhBMi4yNSAyLjI1IDAgMDA1Ljc1IDguNWgxLjV2Mi4xMjhhMi4yNTEgMi4yNTEgMCAxMDEuNSAwVjguNWgxLjVhMi4yNSAyLjI1IDAgMDAyLjI1LTIuMjV2LS44NzhhMi4yNSAyLjI1IDAgMTAtMS41IDB2Ljg3OGEuNzUuNzUgMCAwMS0uNzUuNzVoLTQuNUEuNzUuNzUgMCAwMTUgNi4yNXYtLjg3OHptMy43NSA3LjM3OGEuNzUuNzUgMCAxMS0xLjUgMCAuNzUuNzUgMCAwMTEuNSAwem0zLTguNzVhLjc1Ljc1IDAgMTAwLTEuNS43NS43NSAwIDAwMCAxLjV6XCI+PC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4ke3JlcG9TdGF0cy5mb3JrcyB8fCAn5pqC5pyq6I635Y+WJ308L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXQtbGFiZWxcIj5Gb3Jrczwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL0pTUkVJL2FzdC1leHBsb3Jlci1oZWxwZXIvaXNzdWVzXCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJzdGF0LWl0ZW0gaXNzdWUtc3RhdFwiIHRpdGxlPVwiR2l0SHViIElzc3Vl5pWwIC0g54K55Ye75p+l55yL6K+m5oOFXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwic3RhdC1pY29uXCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTggMS41YTYuNSA2LjUgMCAxMDAgMTMgNi41IDYuNSAwIDAwMC0xM3pNMCA4YTggOCAwIDExMTYgMEE4IDggMCAwMTAgOHptOSAzYTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHptLS4yNS02LjI1YS43NS43NSAwIDAwLTEuNSAwdjMuNWEuNzUuNzUgMCAwMDEuNSAwdi0zLjV6XCI+PC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4ke3JlcG9TdGF0cy5pc3N1ZXMgfHwgJ+aaguacquiOt+WPlid9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGF0LWxhYmVsXCI+SXNzdWVzPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vSlNSRUkvYXN0LWV4cGxvcmVyLWhlbHBlci9jb21taXRzL21haW5cIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cInN0YXQtaXRlbSB1cGRhdGUtc3RhdFwiIHRpdGxlPVwi5pyA6L+R5pu05paw5pe26Ze0IC0g54K55Ye75p+l55yL5o+Q5Lqk5Y6G5Y+yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwic3RhdC1pY29uXCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTEuNjQzIDMuMTQzTC40MjcgMS45MjdBLjI1LjI1IDAgMDAwIDIuMTA0VjUuNzVjMCAuMTM4LjExMi4yNS4yNS4yNWgzLjY0NmEuMjUuMjUgMCAwMC4xNzctLjQyN0wyLjcxNSA0LjIxNWE2LjUgNi41IDAgMTEtMS4xOCA0LjQ1OC43NS43NSAwIDEwLTEuNDkzLjE1NCA4LjAwMSA4LjAwMSAwIDEwMS42LTUuNjg0ek03Ljc1IDRhLjc1Ljc1IDAgMDEuNzUuNzV2Mi45OTJsMi4wMjguODEyYS43NS43NSAwIDAxLS41NTcgMS4zOTJsLTIuNS0xQS43NS43NSAwIDAxNyA4LjI1di0zLjVBLjc1Ljc1IDAgMDE3Ljc1IDR6XCI+PC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4ke3JlcG9TdGF0cy51cGRhdGVkQXQgfHwgJ+aaguacquiOt+WPlid9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGF0LWxhYmVsXCI+5pu05paw5LqOPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDwhLS0g57uE57uH5L+h5oGv6YOo5YiGIC0g5aKe5by654mIIC0tPlxuICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwib3JnLWluZm8tc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcmctaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZy1sb2dvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExODEyNTc1ND9zPTIwMCZ2PTRcIiBhbHQ9XCJKU1JFSee7hOe7h0xvZ29cIiBjbGFzcz1cImpzcmVpLWxvZ29cIiB3aWR0aD1cIjY0XCIgaGVpZ2h0PVwiNjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctYmFkZ2VcIj7lvIDmupDnu4Tnu4c8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPuWFs+S6jkpTUkVJPC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkpTUkVJIChKYXZhU2NyaXB0IFJldmVyc2UgRW5naW5lZXJpbmcgSW5pdGlhdGl2ZSkg5piv5LiA5Liq5LiT5rOo5LqOSmF2YVNjcmlwdOmAhuWQkeW3peeoi+eahOW8gOa6kOe7hOe7h++8jOiHtOWKm+S6juaPkOS+m+S8mOi0qOeahOmAhuWQkeW3peeoi+W3peWFt+WSjOaVmeeoi++8jOW4ruWKqeW8gOWPkeiAheabtOWlveWcsOeQhuino+WSjOWIhuaekEphdmFTY3JpcHTku6PnoIHjgII8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZy1mZWF0dXJlc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmVhdHVyZS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmVhdHVyZS1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTEyIDJMMSAyMWgyMkwxMiAyem0wIDRsNy41MyAxM0g0LjQ3TDEyIDZ6bS0xIDN2NGgyVjloLTJ6bTAgNnYyaDJ2LTJoLTJ6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmVhdHVyZS10ZXh0XCI+6YCG5ZCR5bel5YW3PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZlYXR1cmUtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZlYXR1cmUtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTUgMTRIN3YtMmg3djJ6bTMtNEg3di0yaDEwdjJ6bTAtNEg3VjdoMTB2MnpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZWF0dXJlLXRleHRcIj7mioDmnK/mlZnnqIs8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmVhdHVyZS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmVhdHVyZS1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTkuNCAxNi42TDQuOCAxMmw0LjYtNC42TDggNmwtNiA2IDYgNiAxLjQtMS40em01LjIgMGw0LjYtNC42LTQuNi00LjZMMTYgNmw2IDYtNiA2LTEuNC0xLjR6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmVhdHVyZS10ZXh0XCI+5Luj56CB5YiG5p6QPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcmctYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vSlNSRUlcIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cIm9yZy1hY3Rpb24tYnV0dG9uIGZpeGVkLWJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbi1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiZ2l0aHViLWljb25cIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNOCAwQzMuNTggMCAwIDMuNTggMCA4YzAgMy41NCAyLjI5IDYuNTMgNS40NyA3LjU5LjQuMDcuNTUtLjE3LjU1LS4zOCAwLS4xOS0uMDEtLjgyLS4wMS0xLjQ5LTIuMDEuMzctMi41My0uNDktMi42OS0uOTQtLjA5LS4yMy0uNDgtLjk0LS44Mi0xLjEzLS4yOC0uMTUtLjY4LS41Mi0uMDEtLjUzLjYzLS4wMSAxLjA4LjU4IDEuMjMuODIuNzIgMS4yMSAxLjg3Ljg3IDIuMzMuNjYuMDctLjUyLjI4LS44Ny41MS0xLjA3LTEuNzgtLjItMy42NC0uODktMy42NC0zLjk1IDAtLjg3LjMxLTEuNTkuODItMi4xNS0uMDgtLjItLjM2LTEuMDIuMDgtMi4xMiAwIDAgLjY3LS4yMSAyLjIuODIuNjQtLjE4IDEuMzItLjI3IDItLjI3LjY4IDAgMS4zNi4wOSAyIC4yNyAxLjUzLTEuMDQgMi4yLS44MiAyLjItLjgyLjQ0IDEuMS4xNiAxLjkyLjA4IDIuMTIuNTEuNTYuODIgMS4yNy44MiAyLjE1IDAgMy4wNy0xLjg3IDMuNzUtMy42NSAzLjk1LjI5LjI1LjU0LjczLjU0IDEuNDggMCAxLjA3LS4wMSAxLjkzLS4wMSAyLjIgMCAuMjEuMTUuNDYuNTUuMzhBOC4wMTMgOC4wMTMgMCAwMDE2IDhjMC00LjQyLTMuNTgtOC04LTh6XCI+PC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24tdGV4dFwiPuafpeeci+abtOWkmkpTUkVJ6aG555uuPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPCEtLSDkuqTmtYHnvqTkv6Hmga/pg6jliIYgLSDljaHniYflvI/orr7orqEgLS0+XG4gICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjb21tdW5pdHktc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbXVuaXR5LWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tdW5pdHktaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW11bml0eS1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNMTIgMmMxLjM1IDAgMi42LjQ1IDMuNiAxLjJMMTIgNy44IDguNCAzLjJDOS40IDIuNDUgMTAuNjUgMiAxMiAybTkgMTVjMCAxLjY2LTEuMzQgMy0zIDNINmMtMS42NiAwLTMtMS4zNC0zLTN2LTQuODVjMC0uMy4xNS0uNTcuNC0uNzRMMTIgNWw4LjYgNi40MWMuMjUuMTcuNC40NC40Ljc0VjE3elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPumAhuWQkeaKgOacr+S6pOa1gee+pDwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+5Yqg5YWl5oiR5Lus55qE5oqA5pyv5Lqk5rWB56S+5Yy677yM5YiG5Lqr57uP6aqM5LiO55+l6K+GPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxci1jb2RlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0g5b6u5L+h6YOo5YiGIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxci1zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxci1zZWN0aW9uLXRpdGxlIHdlY2hhdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNOC4yIDEzLjNjLS41IDAtLjktLjQtLjktLjlzLjQtLjkuOS0uOS45LjQuOS45LS40LjktLjkuOW00LjkgMGMtLjUgMC0uOS0uNC0uOS0uOXMuNC0uOS45LS45LjkuNC45LjktLjQuOS0uOS45bTMtNi41Yy0zLjYgMC02LjUgMi40LTYuNSA1LjQgMCAuNS4xIDEgLjIgMS41LTIuMy0uMS00LjYtMS4yLTYtMi45YTEuNjEgMS42MSAwIDAgMC0uMi44YzAgMSAuOSAxLjkgMi4yIDIuNC0uOCAwLTEuNS0uMS0yLjEtLjQgMCAxLjQgMiAyLjUgMy42IDIuOC0uNC4xLS45LjItMS40LjItLjMgMC0uNSAwLS44LS4xLjQgMS4xIDEuNCAxLjkgMi42IDItMSAuNy0yLjIgMS4xLTMuNiAxLjFIM2MxLjMuOCAyLjggMS4zIDQuNCAxLjMgNS4zIDAgOC4yLTQuMSA4LjItNy42di0uM2MuNi0uNCAxLTEgMS40LTEuNi0uNS4yLTEgLjQtMS42LjUuNi0uNCAxLTEgMS4yLTEuNy0uNi4zLTEuMi42LTEuOS43XCIvPjwvcGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg5b6u5L+h5Lqk5rWB576kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInFyLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPuaJq+eggeWKoOWFpemAhuWQkeaKgOacr+W+ruS/oeS6pOa1gee+pO+8mjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxci1jb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvSlNSRUkvLmdpdGh1Yi9wcm9maWxlL1JFQURNRS5hc3NldHMvaW1hZ2UtMjAyNDEwMTYyMzA2NTM2NjkucG5nXCIgYWx0PVwi6YCG5ZCR5oqA5pyv5b6u5L+h5Lqk5rWB576k5LqM57u056CBXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXItaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+5aaC576k5LqM57u056CB6L+H5pyf77yM5Y+v5Lul5Yqg5oiR5Liq5Lq65b6u5L+h77yM5Y+R6YCB44CQ6YCG5ZCR576k44CR5ouJ5L2g6L+b576k77yaPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInFyLWNvZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9KU1JFSS8uZ2l0aHViL3Byb2ZpbGUvUkVBRE1FLmFzc2V0cy9pbWFnZS0yMDIzMTAzMDEzMjAyNjU0MS03NjE0MDY1LnBuZ1wiIGFsdD1cIuS4quS6uuW+ruS/oeS6jOe7tOeggVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUVHnvqTpg6jliIYgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInFyLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInFyLXNlY3Rpb24tdGl0bGUgcXFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTEyLjAwMyAyYy01LjUxNCAwLTkuOTk4IDQuNDg0LTkuOTk4IDkuOTk3IDAgNS41MTUgNC40ODQgMTAgOS45OTggMTAgNS41MTUgMCAxMC00LjQ4NSAxMC0xMCAwLTUuNTEzLTQuNDg1LTkuOTk3LTEwLTkuOTk3em0wIDEuNWM0LjY5IDAgOC41IDMuODA3IDguNSA4LjQ5NyAwIDQuNjkxLTMuODEgOC41LTguNSA4LjUtNC42ODkgMC04LjQ5OC0zLjgwOS04LjQ5OC04LjUgMC00LjY5IDMuODA5LTguNDk3IDguNDk4LTguNDk3em0tMC43NDcgNC41NjJ2LTAuMDAyYy0wLjMyNSAwLjAzOC0wLjkxMyAwLjE5Ny0xLjcwNyAxLjA2My0wLjg5NSAwLjk3OC0wLjg0NSAyLjAzMi0wLjg0NSAyLjAzMnMtMS4yODkgMC4xODQtMS42NzcgMS45MDRjLTAuMzg4IDEuNzIxLTAuMTIzIDIuMDk0LTAuMTIzIDIuMDk0cy0wLjIxNCAxLjU3NyAwLjczNSAwLjU4N2MwLjMwMy0wLjMxNiAwLjQ5OS0xLjE1MyAwLjQ5OS0xLjE1M2wwLjc4OSAxLjc4MWMtMC44ODEgMS44Ni0wLjc4OSAyLjI5OS0wLjc4OSAyLjI5OXMtMC4xMjMgMC44ODMgMC42NDMgMC4yMDVjMC43NjYtMC42NzggMS4yMTktMS45NzcgMS4yMTktMS45NzdsMC4yMTQgMC45MmMtMC4xMjMgMS41NjUgMC4xNTIgMS43MjEgMC4xNTIgMS43MjFzMC4yNDUgMC40MzEgMC41ODMtMC4xNDdjMC4zMzgtMC41NzcgMC4yNDUtMS4zNTEgMC4yNDUtMS4zNTFsMC43OTctMC4wNTljMC45MTkgMS42NDQgMS42NzYgMC45MiAxLjY3NiAwLjkyczAuMzY3LTAuNTE2LTAuMjc1LTEuNDMzbDAuNjEzLTAuNDg5YzEuMTg4IDAuODIgMS45Mi0wLjA1OSAxLjkyLTAuMDU5czAuMjc1LTAuNzIzLTEuMTg4LTEuMDYybDAuMTgzLTAuNzIzYzEuNTU0LTAuMTQ3IDEuNDMyLTEuMDYyIDEuNDMyLTEuMDYycy0wLjA2MS0wLjc1LTEuNDMyLTAuNzVsLTAuMjQ1LTAuNzkxYzEuMzEtMC40ODkgMS4xMjctMS4yMDIgMS4xMjctMS4yMDJzLTAuMjE0LTAuNjA2LTEuMTg4LTAuNTE4bC0wLjczNS0xLjIwMmMwLjkxOS0wLjU3NyAwLjY3NC0xLjIwMiAwLjY3NC0xLjIwMnMtMC4zNjctMC41MTgtMS4xODggMC4wNTlsLTEuMTg4LTEuMjAyYzAuNjEzLTAuODIgMC4yMTQtMS4yMDIgMC4yMTQtMS4yMDJzLTAuNTIxLTAuMzIxLTEuMTI3IDAuNTE4bC0wLjkxOS0wLjc5MWMwLjMwNi0wLjgyLTAuMTUyLTEuMDYyLTAuMTUyLTEuMDYycy0wLjU4My0wLjIwNS0wLjc2NiAwLjc5MWwtMC45MTktMC41MThjMC4yMTQtMC45NzgtMC4zNjctMS4wNjItMC4zNjctMS4wNjJ6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRUeS6pOa1gee+pFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxci1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48YSBocmVmPVwiaHR0cHM6Ly9xbS5xcS5jb20vcS9ZZmRCM3czT0VZXCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJxcS1saW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTE0IDN2MmgzLjU5bC05LjgzIDkuODMtMS40MS0xLjQxTDE2LjE3IDNIMTRWMWg2djZoLTJWMy40MWwtOS44MyA5LjgzIDEuNDEgMS40MUwyMC40MSA0SDI0djJoMlYwaC02djJoLTZ6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOeCueatpOebtOaOpeWKoOWFpVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiDmiJbmiavnoIHliqDlhaVRUeS6pOa1gee+pO+8mjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxci1jb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvSlNSRUkvLmdpdGh1Yi9wcm9maWxlL1JFQURNRS5hc3NldHMvanNyZWktcXEtZ3JvdXAuanBnXCIgYWx0PVwiUVHkuqTmtYHnvqTkuoznu7TnoIFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRlbGVncmFt6YOo5YiGIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxci1zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxci1zZWN0aW9uLXRpdGxlIHRlbGVncmFtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIk05Ljc4IDE4LjY1bC4yOC00LjIzIDcuNjgtNi45MmMuMzQtLjMxLS4wNy0uNDYtLjUyLS4xOUw3Ljc0IDEzLjMgMy42NCAxMmMtLjg4LS4yNS0uODktLjg2LjItMS4zbDE1Ljk3LTYuMTZjLjczLS4zMyAxLjQzLjE4IDEuMTUgMS4zbC0yLjcyIDEyLjgxYy0uMTkuOTEtLjc0IDEuMTMtMS41LjcxTDEyLjYgMTYuM2wtMS45OSAxLjkzYy0uMjMuMjMtLjQyLjQyLS44My40MnpcIj48L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlbGVncmFtIOS6pOa1gee+pFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxci1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48YSBocmVmPVwiaHR0cHM6Ly90Lm1lL2pzcmVpanNyZWlcIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cInRnLWxpbmtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNMTQgM3YyaDMuNTlsLTkuODMgOS44My0xLjQxLTEuNDFMMTYuMTcgM0gxNFYxaDZ2NmgtMlYzLjQxbC05LjgzIDkuODMgMS40MSAxLjQxTDIwLjQxIDRIMjR2MmgyVjBoLTZ2MmgtNnpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg54K55q2k55u05o6l5Yqg5YWlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+IOaIluaJq+eggeWKoOWFpSBURyDkuqTmtYHnvqTvvJo8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXItY29kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL0pTUkVJLy5naXRodWIvcHJvZmlsZS9SRUFETUUuYXNzZXRzL2ltYWdlLTIwMjQxMDE2MjMxMTQzMzE1LnBuZ1wiIGFsdD1cIlRH5Lqk5rWB576k5LqM57u056CBXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGA7XG59XG5cbi8qKlxuICog6I635Y+W5LuT5bqT57uf6K6h5L+h5oGv55qE57yT5a2Y5pWw5o2uXG4gKiDlpoLmnpznvJPlrZjkuI3lrZjlnKjmiJblt7Lov4fmnJ/vvIzliJnov5Tlm57nqbrmlbDmja7lubbop6blj5HlvILmraXmm7TmlrBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlcG9TdGF0c0Zyb21DYWNoZSgpOiBhbnkge1xuICAgIGNvbnN0IENBQ0hFX0tFWSA9ICdKU1JFSV9yZXBvX3N0YXRzJztcbiAgICBjb25zdCBDQUNIRV9FWFBJUlkgPSA2MCAqIDYwICogMTAwMDsgLy8gMeWwj+aXtue8k+WtmFxuICAgIFxuICAgIC8vIOepuuaVsOaNruWvueixoe+8jOihqOekuuacquiOt+WPluWIsFxuICAgIGNvbnN0IGVtcHR5U3RhdHMgPSB7IFxuICAgICAgICBzdGFyczogbnVsbCwgXG4gICAgICAgIGZvcmtzOiBudWxsLCBcbiAgICAgICAgaXNzdWVzOiBudWxsLCBcbiAgICAgICAgdXBkYXRlZEF0OiBudWxsIFxuICAgIH07XG4gICAgXG4gICAgLy8g5bCd6K+V5LuObG9jYWxTdG9yYWdl6I635Y+W57yT5a2Y5pWw5o2uXG4gICAgY29uc3QgY2FjaGVkRGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKENBQ0hFX0tFWSk7XG4gICAgbGV0IHJlcG9TdGF0cyA9IHsgLi4uZW1wdHlTdGF0cyB9O1xuICAgIFxuICAgIGlmIChjYWNoZWREYXRhKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWREYXRhID0gSlNPTi5wYXJzZShjYWNoZWREYXRhKTtcbiAgICAgICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyDmo4Dmn6XnvJPlrZjmmK/lkKbmnInmlYhcbiAgICAgICAgICAgIGlmIChwYXJzZWREYXRhICYmIHBhcnNlZERhdGEudGltZXN0YW1wICYmIChub3cgLSBwYXJzZWREYXRhLnRpbWVzdGFtcCkgPCBDQUNIRV9FWFBJUlkpIHtcbiAgICAgICAgICAgICAgICByZXBvU3RhdHMgPSBwYXJzZWREYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcG9TdGF0cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+ino+aekOS7k+W6k+e7n+iuoee8k+WtmOaVsOaNruWksei0pTonLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gZW1wdHlTdGF0czsgLy8g6L+U5Zue56m65pWw5o2uXG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8g5aaC5p6c5rKh5pyJ5pyJ5pWI57yT5a2Y77yM5byC5q2l6I635Y+W5paw5pWw5o2uXG4gICAgdHJ5IHtcbiAgICAgICAgZmV0Y2hSZXBvU3RhdHMoKS50aGVuKGRhdGEgPT4ge1xuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAvLyDnvJPlrZjmlrDmlbDmja5cbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShDQUNIRV9LRVksIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvLyDlpoLmnpzpobXpnaLlt7LliqDovb3vvIzmm7TmlrBET01cbiAgICAgICAgICAgICAgICB1cGRhdGVSZXBvU3RhdHNJbkRPTShkYXRhKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gQVBJ6L+U5Zue56m65pWw5o2u77yM5pu05pawRE9N5pi+56S65pyq6I635Y+W54q25oCBXG4gICAgICAgICAgICAgICAgdXBkYXRlUmVwb1N0YXRzSW5ET00oZW1wdHlTdGF0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCfojrflj5bku5PlupPnu5/orqHmlbDmja7lpLHotKU6JywgZXJyKTtcbiAgICAgICAgICAgIC8vIEFQSeiwg+eUqOWHuumUme+8jOabtOaWsERPTeaYvuekuuacquiOt+WPlueKtuaAgVxuICAgICAgICAgICAgdXBkYXRlUmVwb1N0YXRzSW5ET00oZW1wdHlTdGF0cyk7XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WQr+WKqOS7k+W6k+e7n+iuoeabtOaWsOWksei0pTonLCBlcnJvcik7XG4gICAgICAgIHJldHVybiBlbXB0eVN0YXRzOyAvLyDov5Tlm57nqbrmlbDmja5cbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHJlcG9TdGF0cztcbn1cblxuLyoqXG4gKiDku45HaXRIdWIgQVBJ6I635Y+W5LuT5bqT57uf6K6h5pWw5o2uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGZldGNoUmVwb1N0YXRzKCk6IFByb21pc2U8YW55PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8g57uZQVBJ6K+35rGC5re75Yqg6LaF5pe26ZmQ5Yi2XG4gICAgICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4gY29udHJvbGxlci5hYm9ydCgpLCA1MDAwKTsgLy8gNeenkui2heaXtlxuICAgICAgICBcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9KU1JFSS9hc3QtZXhwbG9yZXItaGVscGVyJywge1xuICAgICAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL3ZuZC5naXRodWIudjMranNvbidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgXG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgR2l0SHViIEFQSemUmeivrzogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICAgIFxuICAgICAgICAvLyDmoLzlvI/ljJbml6XmnJ9cbiAgICAgICAgY29uc3QgdXBkYXRlZERhdGUgPSBuZXcgRGF0ZShkYXRhLnVwZGF0ZWRfYXQpO1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gYCR7dXBkYXRlZERhdGUuZ2V0RnVsbFllYXIoKX0tJHtTdHJpbmcodXBkYXRlZERhdGUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyl9LSR7U3RyaW5nKHVwZGF0ZWREYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKX1gO1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0YXJzOiBkYXRhLnN0YXJnYXplcnNfY291bnQsXG4gICAgICAgICAgICBmb3JrczogZGF0YS5mb3Jrc19jb3VudCxcbiAgICAgICAgICAgIGlzc3VlczogZGF0YS5vcGVuX2lzc3Vlc19jb3VudCxcbiAgICAgICAgICAgIHVwZGF0ZWRBdDogZm9ybWF0dGVkRGF0ZVxuICAgICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ+iOt+WPluS7k+W6k+e7n+iuoeaVsOaNruWksei0pTonLCBlcnJvcik7XG4gICAgICAgIC8vIOi/lOWbnm51bGzooajnpLrojrflj5blpLHotKVcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuXG4vKipcbiAqIOabtOaWsERPTeS4reeahOS7k+W6k+e7n+iuoeaVsOaNrlxuICovXG5mdW5jdGlvbiB1cGRhdGVSZXBvU3RhdHNJbkRPTShkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBhYm91dFRhYiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhYm91dC10YWInKTtcbiAgICAgICAgaWYgKCFhYm91dFRhYikgcmV0dXJuO1xuICAgICAgICBcbiAgICAgICAgLy8g5pu05paw5ZCE5Liq57uf6K6h5pWw5o2uXG4gICAgICAgIGNvbnN0IHN0YXRJdGVtcyA9IGFib3V0VGFiLnF1ZXJ5U2VsZWN0b3JBbGwoJy5naXRodWItc3RhdHMgLnN0YXQtaXRlbSBzcGFuJyk7XG4gICAgICAgIGlmIChzdGF0SXRlbXMubGVuZ3RoID49IDQpIHtcbiAgICAgICAgICAgIHN0YXRJdGVtc1swXS50ZXh0Q29udGVudCA9IGRhdGEuc3RhcnM/LnRvU3RyaW5nKCkgfHwgJ+aaguacquiOt+WPlic7XG4gICAgICAgICAgICBzdGF0SXRlbXNbMl0udGV4dENvbnRlbnQgPSBkYXRhLmZvcmtzPy50b1N0cmluZygpIHx8ICfmmoLmnKrojrflj5YnO1xuICAgICAgICAgICAgc3RhdEl0ZW1zWzRdLnRleHRDb250ZW50ID0gZGF0YS5pc3N1ZXM/LnRvU3RyaW5nKCkgfHwgJ+aaguacquiOt+WPlic7XG4gICAgICAgICAgICBzdGF0SXRlbXNbNl0udGV4dENvbnRlbnQgPSBkYXRhLnVwZGF0ZWRBdCB8fCAn5pqC5pyq6I635Y+WJztcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ+abtOaWsERPTeS4reeahOS7k+W6k+e7n+iuoeaVsOaNruWksei0pTonLCBlcnJvcik7XG4gICAgfVxufSAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///707\n");
/***/ }),
/***/ 729:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _dom_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(402);\n/* harmony import */ var _ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(536);\n/* harmony import */ var _settings__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(983);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(610);\n/**\n * AST Explorer助手 - 主入口文件\n *\n * 用于分析ast时辅助提高效率,支持复制和右键菜单,以及元素高亮\n * @author CC11001100\n */\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n/**\n * 主函数,用于初始化和运行脚本\n */\nfunction main() {\n return __awaiter(this, void 0, void 0, function* () {\n 'use strict';\n // 强制启用调试级别的日志\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.enableDebug();\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.info('AST Explorer助手启动中...');\n // 记录当前版本信息\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.group('版本信息');\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.info('版本: 0.4.0');\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.info('环境: ' + (\"production\" || 0));\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.groupEnd();\n // 分组显示初始化过程\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.group('初始化过程');\n // 等待DOM完全加载\n if (document.readyState !== 'complete') {\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.debug('等待页面完全加载...');\n yield new Promise(resolve => {\n window.addEventListener('load', () => resolve());\n });\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.debug('页面完全加载完成');\n }\n else {\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.debug('页面已经完全加载');\n }\n // 增加一个较长的延迟,确保页面元素已完全渲染\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.debug('等待500ms以确保页面元素已完全渲染...');\n yield (0,_dom_helpers__WEBPACK_IMPORTED_MODULE_0__.sleep)(500);\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.debug('延迟等待完成');\n // 加载设置\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.debug('开始加载设置...');\n const settings = (0,_settings__WEBPACK_IMPORTED_MODULE_2__.loadSettings)();\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.debug('设置已加载:', settings);\n console.log('✅ 加载的设置:', settings);\n console.log('✅ hideToolbar值为:', settings.hideToolbar);\n // 确保Toolbar元素存在或等待它出现\n const ensureToolbarAndApplySettings = (...args_1) => __awaiter(this, [...args_1], void 0, function* (retryCount = 0, maxRetries = 3) {\n // 尝试查找Toolbar元素\n const toolbar = document.getElementById('Toolbar');\n console.log(`🔍 [尝试 ${retryCount + 1}/${maxRetries + 1}] 查找Toolbar元素:`, toolbar);\n if (toolbar) {\n console.log('✅ 成功找到Toolbar元素,准备应用设置');\n // 应用所有设置\n console.log('🔍 准备应用所有设置...');\n (0,_settings__WEBPACK_IMPORTED_MODULE_2__.applyAllSettings)(settings);\n console.log('✅ 所有设置已应用');\n return true;\n }\n else if (retryCount < maxRetries) {\n // 如果没找到且未达到最大重试次数,等待后重试\n console.log(`⚠️ 未找到Toolbar元素,${retryCount + 1}/${maxRetries + 1}次尝试`);\n yield (0,_dom_helpers__WEBPACK_IMPORTED_MODULE_0__.sleep)(300); // 每次等待300ms\n return ensureToolbarAndApplySettings(retryCount + 1, maxRetries);\n }\n else {\n // 达到最大重试次数,直接应用设置\n console.log('⚠️ 达到最大重试次数,仍未找到Toolbar元素');\n console.log('🔍 将直接应用设置...');\n (0,_settings__WEBPACK_IMPORTED_MODULE_2__.applyAllSettings)(settings);\n console.log('✅ 所有设置已强制应用');\n return false;\n }\n });\n // 尝试确保Toolbar元素存在并应用设置\n yield ensureToolbarAndApplySettings();\n // 创建设置UI\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.debug('开始创建设置UI...');\n (0,_ui__WEBPACK_IMPORTED_MODULE_1__.createSettingsUI)();\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.debug('设置界面已创建完成');\n // 创建右键菜单\n (0,_ui__WEBPACK_IMPORTED_MODULE_1__.createContextMenu)();\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.debug('右键菜单已创建');\n // 添加设置变更事件监听\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.debug('添加设置变更事件监听器...');\n document.addEventListener('ast-explorer-helper-settings-changed', (e) => {\n console.log('🔔 设置变更事件触发');\n const updatedSettings = e.detail;\n if (updatedSettings) {\n console.log('✅ 接收到的更新设置:', updatedSettings);\n console.log('✅ hideToolbar值为:', updatedSettings.hideToolbar);\n // 应用更新的设置\n console.log('🔍 准备应用更新后的设置...');\n (0,_settings__WEBPACK_IMPORTED_MODULE_2__.applyAllSettings)(updatedSettings);\n console.log('✅ 更新的设置已应用');\n // 延迟500ms后再次应用,确保设置生效\n setTimeout(() => {\n console.log('🔍 延迟500ms后再次应用设置...');\n (0,_settings__WEBPACK_IMPORTED_MODULE_2__.applyToolbarSetting)(updatedSettings.hideToolbar);\n console.log('✅ 设置已再次应用');\n }, 500);\n }\n else {\n console.warn('⚠️ 设置变更事件中没有包含有效的设置数据');\n }\n });\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.debug('设置变更事件监听器已添加');\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.groupEnd(); // 结束初始化过程分组\n _logger__WEBPACK_IMPORTED_MODULE_3__.logger.info('AST Explorer助手已启动完成');\n // 定期更新可选择性和右键菜单\n while (true) {\n yield (0,_dom_helpers__WEBPACK_IMPORTED_MODULE_0__.setSelectable)();\n yield (0,_dom_helpers__WEBPACK_IMPORTED_MODULE_0__.sleep)(300);\n }\n });\n}\n// 运行主函数\nmain().catch(error => _logger__WEBPACK_IMPORTED_MODULE_3__.logger.error(\"AST Explorer助手运行出错:\", error));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LnRzP2ZmYjQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBU1QgRXhwbG9yZXLliqnmiYsgLSDkuLvlhaXlj6Pmlofku7ZcbiAqIFxuICog55So5LqO5YiG5p6QYXN05pe26L6F5Yqp5o+Q6auY5pWI546H77yM5pSv5oyB5aSN5Yi25ZKM5Y+z6ZSu6I+c5Y2V77yM5Lul5Y+K5YWD57Sg6auY5LquXG4gKiBAYXV0aG9yIENDMTEwMDExMDBcbiAqL1xuXG5pbXBvcnQgeyBzZXRTZWxlY3RhYmxlLCBzbGVlcCB9IGZyb20gJy4vZG9tLWhlbHBlcnMnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dE1lbnUsIGNyZWF0ZVNldHRpbmdzVUkgfSBmcm9tICcuL3VpJztcbmltcG9ydCB7IGxvYWRTZXR0aW5ncywgYXBwbHlBbGxTZXR0aW5ncywgYXBwbHlUb29sYmFyU2V0dGluZywgYXBwbHlOb2RlU2VsZWN0aW9uU2V0dGluZyB9IGZyb20gJy4vc2V0dGluZ3MnO1xuaW1wb3J0IHsgbG9nZ2VyLCBMb2dMZXZlbCB9IGZyb20gJy4vbG9nZ2VyJztcblxuLyoqXG4gKiDkuLvlh73mlbDvvIznlKjkuo7liJ3lp4vljJblkozov5DooYzohJrmnKxcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbWFpbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICAvLyDlvLrliLblkK/nlKjosIPor5XnuqfliKvnmoTml6Xlv5dcbiAgICBsb2dnZXIuZW5hYmxlRGVidWcoKTtcblxuICAgIGxvZ2dlci5pbmZvKCdBU1QgRXhwbG9yZXLliqnmiYvlkK/liqjkuK0uLi4nKTtcblxuICAgIC8vIOiusOW9leW9k+WJjeeJiOacrOS/oeaBr1xuICAgIGxvZ2dlci5ncm91cCgn54mI5pys5L+h5oGvJyk7XG4gICAgbG9nZ2VyLmluZm8oJ+eJiOacrDogMC40LjAnKTtcbiAgICBsb2dnZXIuaW5mbygn546v5aKDOiAnICsgKHByb2Nlc3MuZW52Lk5PREVfRU5WIHx8ICdkZXZlbG9wbWVudCcpKTtcbiAgICBsb2dnZXIuZ3JvdXBFbmQoKTtcblxuICAgIC8vIOWIhue7hOaYvuekuuWIneWni+WMlui/h+eoi1xuICAgIGxvZ2dlci5ncm91cCgn5Yid5aeL5YyW6L+H56iLJyk7XG5cbiAgICAvLyDnrYnlvoVET03lrozlhajliqDovb1cbiAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gJ2NvbXBsZXRlJykge1xuICAgICAgICBsb2dnZXIuZGVidWcoJ+etieW+hemhtemdouWujOWFqOWKoOi9vS4uLicpO1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGxvZ2dlci5kZWJ1Zygn6aG16Z2i5a6M5YWo5Yqg6L295a6M5oiQJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKCfpobXpnaLlt7Lnu4/lrozlhajliqDovb0nKTtcbiAgICB9XG4gICAgXG4gICAgLy8g5aKe5Yqg5LiA5Liq6L6D6ZW/55qE5bu26L+f77yM56Gu5L+d6aG16Z2i5YWD57Sg5bey5a6M5YWo5riy5p+TXG4gICAgbG9nZ2VyLmRlYnVnKCfnrYnlvoU1MDBtc+S7peehruS/nemhtemdouWFg+e0oOW3suWujOWFqOa4suafky4uLicpO1xuICAgIGF3YWl0IHNsZWVwKDUwMCk7XG4gICAgbG9nZ2VyLmRlYnVnKCflu7bov5/nrYnlvoXlrozmiJAnKTtcblxuICAgIC8vIOWKoOi9veiuvue9rlxuICAgIGxvZ2dlci5kZWJ1Zygn5byA5aeL5Yqg6L296K6+572uLi4uJyk7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSBsb2FkU2V0dGluZ3MoKTtcbiAgICBsb2dnZXIuZGVidWcoJ+iuvue9ruW3suWKoOi9vTonLCBzZXR0aW5ncyk7XG4gICAgY29uc29sZS5sb2coJ+KchSDliqDovb3nmoTorr7nva46Jywgc2V0dGluZ3MpO1xuICAgIGNvbnNvbGUubG9nKCfinIUgaGlkZVRvb2xiYXLlgLzkuLo6Jywgc2V0dGluZ3MuaGlkZVRvb2xiYXIpO1xuICAgIFxuICAgIC8vIOehruS/nVRvb2xiYXLlhYPntKDlrZjlnKjmiJbnrYnlvoXlroPlh7rnjrBcbiAgICBjb25zdCBlbnN1cmVUb29sYmFyQW5kQXBwbHlTZXR0aW5ncyA9IGFzeW5jIChyZXRyeUNvdW50ID0gMCwgbWF4UmV0cmllcyA9IDMpID0+IHtcbiAgICAgICAgLy8g5bCd6K+V5p+l5om+VG9vbGJhcuWFg+e0oFxuICAgICAgICBjb25zdCB0b29sYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1Rvb2xiYXInKTtcbiAgICAgICAgY29uc29sZS5sb2coYPCflI0gW+WwneivlSAke3JldHJ5Q291bnQrMX0vJHttYXhSZXRyaWVzKzF9XSDmn6Xmib5Ub29sYmFy5YWD57SgOmAsIHRvb2xiYXIpO1xuICAgICAgICBcbiAgICAgICAgaWYgKHRvb2xiYXIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfinIUg5oiQ5Yqf5om+5YiwVG9vbGJhcuWFg+e0oO+8jOWHhuWkh+W6lOeUqOiuvue9ricpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyDlupTnlKjmiYDmnInorr7nva5cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfwn5SNIOWHhuWkh+W6lOeUqOaJgOacieiuvue9ri4uLicpO1xuICAgICAgICAgICAgYXBwbHlBbGxTZXR0aW5ncyhzZXR0aW5ncyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn4pyFIOaJgOacieiuvue9ruW3suW6lOeUqCcpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChyZXRyeUNvdW50IDwgbWF4UmV0cmllcykge1xuICAgICAgICAgICAgLy8g5aaC5p6c5rKh5om+5Yiw5LiU5pyq6L6+5Yiw5pyA5aSn6YeN6K+V5qyh5pWw77yM562J5b6F5ZCO6YeN6K+VXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhg4pqg77iPIOacquaJvuWIsFRvb2xiYXLlhYPntKDvvIwke3JldHJ5Q291bnQrMX0vJHttYXhSZXRyaWVzKzF95qyh5bCd6K+VYCk7XG4gICAgICAgICAgICBhd2FpdCBzbGVlcCgzMDApOyAvLyDmr4/mrKHnrYnlvoUzMDBtc1xuICAgICAgICAgICAgcmV0dXJuIGVuc3VyZVRvb2xiYXJBbmRBcHBseVNldHRpbmdzKHJldHJ5Q291bnQgKyAxLCBtYXhSZXRyaWVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIOi+vuWIsOacgOWkp+mHjeivleasoeaVsO+8jOebtOaOpeW6lOeUqOiuvue9rlxuICAgICAgICAgICAgY29uc29sZS5sb2coJ+KaoO+4jyDovr7liLDmnIDlpKfph43or5XmrKHmlbDvvIzku43mnKrmib7liLBUb29sYmFy5YWD57SgJyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn8J+UjSDlsIbnm7TmjqXlupTnlKjorr7nva4uLi4nKTtcbiAgICAgICAgICAgIGFwcGx5QWxsU2V0dGluZ3Moc2V0dGluZ3MpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ+KchSDmiYDmnInorr7nva7lt7LlvLrliLblupTnlKgnKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBcbiAgICAvLyDlsJ3or5Xnoa7kv51Ub29sYmFy5YWD57Sg5a2Y5Zyo5bm25bqU55So6K6+572uXG4gICAgYXdhaXQgZW5zdXJlVG9vbGJhckFuZEFwcGx5U2V0dGluZ3MoKTtcblxuICAgIC8vIOWIm+W7uuiuvue9rlVJXG4gICAgbG9nZ2VyLmRlYnVnKCflvIDlp4vliJvlu7rorr7nva5VSS4uLicpO1xuICAgIGNyZWF0ZVNldHRpbmdzVUkoKTtcbiAgICBsb2dnZXIuZGVidWcoJ+iuvue9rueVjOmdouW3suWIm+W7uuWujOaIkCcpO1xuXG4gICAgLy8g5Yib5bu65Y+z6ZSu6I+c5Y2VXG4gICAgY3JlYXRlQ29udGV4dE1lbnUoKTtcbiAgICBsb2dnZXIuZGVidWcoJ+WPs+mUruiPnOWNleW3suWIm+W7uicpO1xuICAgIFxuICAgIC8vIOa3u+WKoOiuvue9ruWPmOabtOS6i+S7tuebkeWQrFxuICAgIGxvZ2dlci5kZWJ1Zygn5re75Yqg6K6+572u5Y+Y5pu05LqL5Lu255uR5ZCs5ZmoLi4uJyk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYXN0LWV4cGxvcmVyLWhlbHBlci1zZXR0aW5ncy1jaGFuZ2VkJywgKGUpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ/CflJQg6K6+572u5Y+Y5pu05LqL5Lu26Kem5Y+RJyk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRTZXR0aW5ncyA9IChlIGFzIEN1c3RvbUV2ZW50KS5kZXRhaWw7XG4gICAgICAgIGlmICh1cGRhdGVkU2V0dGluZ3MpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfinIUg5o6l5pS25Yiw55qE5pu05paw6K6+572uOicsIHVwZGF0ZWRTZXR0aW5ncyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn4pyFIGhpZGVUb29sYmFy5YC85Li6OicsIHVwZGF0ZWRTZXR0aW5ncy5oaWRlVG9vbGJhcik7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIOW6lOeUqOabtOaWsOeahOiuvue9rlxuICAgICAgICAgICAgY29uc29sZS5sb2coJ/CflI0g5YeG5aSH5bqU55So5pu05paw5ZCO55qE6K6+572uLi4uJyk7XG4gICAgICAgICAgICBhcHBseUFsbFNldHRpbmdzKHVwZGF0ZWRTZXR0aW5ncyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygn4pyFIOabtOaWsOeahOiuvue9ruW3suW6lOeUqCcpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyDlu7bov581MDBtc+WQjuWGjeasoeW6lOeUqO+8jOehruS/neiuvue9rueUn+aViFxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ/CflI0g5bu26L+fNTAwbXPlkI7lho3mrKHlupTnlKjorr7nva4uLi4nKTtcbiAgICAgICAgICAgICAgICBhcHBseVRvb2xiYXJTZXR0aW5nKHVwZGF0ZWRTZXR0aW5ncy5oaWRlVG9vbGJhcik7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+KchSDorr7nva7lt7Llho3mrKHlupTnlKgnKTtcbiAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ+KaoO+4jyDorr7nva7lj5jmm7Tkuovku7bkuK3msqHmnInljIXlkKvmnInmlYjnmoTorr7nva7mlbDmja4nKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGxvZ2dlci5kZWJ1Zygn6K6+572u5Y+Y5pu05LqL5Lu255uR5ZCs5Zmo5bey5re75YqgJyk7XG4gICAgXG4gICAgbG9nZ2VyLmdyb3VwRW5kKCk7IC8vIOe7k+adn+WIneWni+WMlui/h+eoi+WIhue7hFxuICAgIFxuICAgIGxvZ2dlci5pbmZvKCdBU1QgRXhwbG9yZXLliqnmiYvlt7LlkK/liqjlrozmiJAnKTtcbiAgICBcbiAgICAvLyDlrprmnJ/mm7TmlrDlj6/pgInmi6nmgKflkozlj7PplK7oj5zljZVcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBhd2FpdCBzZXRTZWxlY3RhYmxlKCk7XG4gICAgICAgIGF3YWl0IHNsZWVwKDMwMCk7XG4gICAgfVxufVxuXG4vLyDov5DooYzkuLvlh73mlbBcbm1haW4oKS5jYXRjaChlcnJvciA9PiBsb2dnZXIuZXJyb3IoXCJBU1QgRXhwbG9yZXLliqnmiYvov5DooYzlh7rplJk6XCIsIGVycm9yKSk7ICJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///729\n");
/***/ }),
/***/ 792:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createTabsNavigation: () => (/* reexport safe */ _tabs_template__WEBPACK_IMPORTED_MODULE_2__.createTabsNavigation),\n/* harmony export */ getTabsStyles: () => (/* reexport safe */ _tabs_styles__WEBPACK_IMPORTED_MODULE_1__.getTabsStyles),\n/* harmony export */ initTabEvents: () => (/* binding */ initTabEvents),\n/* harmony export */ resetTabsState: () => (/* binding */ resetTabsState)\n/* harmony export */ });\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(610);\n/* harmony import */ var _tabs_styles__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(533);\n/* harmony import */ var _tabs_template__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(661);\n/**\n * 标签页组件 - 逻辑文件\n */\n\n// 导出公共API\n\n\n/**\n * 初始化标签页切换事件\n * @param modalElement 模态框元素\n */\nfunction initTabEvents(modalElement) {\n const tabButtons = modalElement.querySelectorAll('.tab-button');\n tabButtons.forEach(button => {\n button.addEventListener('click', () => {\n const tabName = button.dataset.tab;\n // 更新按钮激活状态\n tabButtons.forEach(btn => {\n btn.classList.remove('active');\n });\n button.classList.add('active');\n // 更新内容区域显示\n const allTabContents = modalElement.querySelectorAll('.tab-content');\n allTabContents.forEach(tab => {\n tab.classList.remove('active');\n });\n const activeTab = modalElement.querySelector(`#${tabName}-tab`);\n if (activeTab) {\n activeTab.classList.add('active');\n }\n });\n });\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('已初始化标签页切换事件');\n}\n/**\n * 重置标签页状态为默认\n * @param modalElement 模态框元素\n */\nfunction resetTabsState(modalElement) {\n // 重置标签页状态为设置标签页\n const tabButtons = modalElement.querySelectorAll('.tab-button');\n tabButtons.forEach(btn => {\n btn.classList.remove('active');\n if (btn.dataset.tab === 'settings') {\n btn.classList.add('active');\n }\n });\n const tabContents = modalElement.querySelectorAll('.tab-content');\n tabContents.forEach(tab => {\n tab.classList.remove('active');\n if (tab.id === 'settings-tab') {\n tab.classList.add('active');\n }\n });\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('已重置标签页状态为默认');\n}\n_logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('已加载标签页组件');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzkyLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7R0FFRztBQUVtQztBQUl0QyxVQUFVO0FBQ29DO0FBQ1M7QUFFdkQ7OztHQUdHO0FBQ0ksU0FBUyxhQUFhLENBQUMsWUFBeUI7SUFDbkQsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRWhFLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDeEIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDbEMsTUFBTSxPQUFPLEdBQUksTUFBc0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBRXBELFdBQVc7WUFDWCxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNyQixHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztZQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRS9CLFdBQVc7WUFDWCxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDckUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDekIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQztZQUNoRSxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNaLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBRUgsMkNBQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQUVEOzs7R0FHRztBQUNJLFNBQVMsY0FBYyxDQUFDLFlBQXlCO0lBQ3BELGdCQUFnQjtJQUNoQixNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNyQixHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQixJQUFLLEdBQW1CLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNsRCxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbEUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN0QixHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQixJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssY0FBYyxFQUFFLENBQUM7WUFDNUIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsMkNBQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQUVELDJDQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYXN0LWV4cGxvcmVyLWhlbHBlci8uL3NyYy91aS90YWJzL3RhYnMuY29tcG9uZW50LnRzP2QyNDgiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDmoIfnrb7pobXnu4Tku7YgLSDpgLvovpHmlofku7ZcbiAqL1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi9sb2dnZXInO1xuaW1wb3J0IHsgZ2V0VGFic1N0eWxlcyB9IGZyb20gJy4vdGFicy5zdHlsZXMnO1xuaW1wb3J0IHsgY3JlYXRlVGFic05hdmlnYXRpb24gfSBmcm9tICcuL3RhYnMudGVtcGxhdGUnO1xuXG4vLyDlr7zlh7rlhazlhbFBUElcbmV4cG9ydCB7IGdldFRhYnNTdHlsZXMgfSBmcm9tICcuL3RhYnMuc3R5bGVzJztcbmV4cG9ydCB7IGNyZWF0ZVRhYnNOYXZpZ2F0aW9uIH0gZnJvbSAnLi90YWJzLnRlbXBsYXRlJztcblxuLyoqXG4gKiDliJ3lp4vljJbmoIfnrb7pobXliIfmjaLkuovku7ZcbiAqIEBwYXJhbSBtb2RhbEVsZW1lbnQg5qih5oCB5qGG5YWD57SgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0VGFiRXZlbnRzKG1vZGFsRWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YWJCdXR0b25zID0gbW9kYWxFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50YWItYnV0dG9uJyk7XG4gICAgXG4gICAgdGFiQnV0dG9ucy5mb3JFYWNoKGJ1dHRvbiA9PiB7XG4gICAgICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhYk5hbWUgPSAoYnV0dG9uIGFzIEhUTUxFbGVtZW50KS5kYXRhc2V0LnRhYjtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8g5pu05paw5oyJ6ZKu5r+A5rS754q25oCBXG4gICAgICAgICAgICB0YWJCdXR0b25zLmZvckVhY2goYnRuID0+IHtcbiAgICAgICAgICAgICAgICBidG4uY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8g5pu05paw5YaF5a655Yy65Z+f5pi+56S6XG4gICAgICAgICAgICBjb25zdCBhbGxUYWJDb250ZW50cyA9IG1vZGFsRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudGFiLWNvbnRlbnQnKTtcbiAgICAgICAgICAgIGFsbFRhYkNvbnRlbnRzLmZvckVhY2godGFiID0+IHtcbiAgICAgICAgICAgICAgICB0YWIuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgYWN0aXZlVGFiID0gbW9kYWxFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3RhYk5hbWV9LXRhYmApO1xuICAgICAgICAgICAgaWYgKGFjdGl2ZVRhYikge1xuICAgICAgICAgICAgICAgIGFjdGl2ZVRhYi5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgXG4gICAgbG9nZ2VyLmRlYnVnKCflt7LliJ3lp4vljJbmoIfnrb7pobXliIfmjaLkuovku7YnKTtcbn1cblxuLyoqXG4gKiDph43nva7moIfnrb7pobXnirbmgIHkuLrpu5jorqRcbiAqIEBwYXJhbSBtb2RhbEVsZW1lbnQg5qih5oCB5qGG5YWD57SgIFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRUYWJzU3RhdGUobW9kYWxFbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIC8vIOmHjee9ruagh+etvumhteeKtuaAgeS4uuiuvue9ruagh+etvumhtVxuICAgIGNvbnN0IHRhYkJ1dHRvbnMgPSBtb2RhbEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRhYi1idXR0b24nKTtcbiAgICB0YWJCdXR0b25zLmZvckVhY2goYnRuID0+IHtcbiAgICAgICAgYnRuLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpO1xuICAgICAgICBpZiAoKGJ0biBhcyBIVE1MRWxlbWVudCkuZGF0YXNldC50YWIgPT09ICdzZXR0aW5ncycpIHtcbiAgICAgICAgICAgIGJ0bi5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIFxuICAgIGNvbnN0IHRhYkNvbnRlbnRzID0gbW9kYWxFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50YWItY29udGVudCcpO1xuICAgIHRhYkNvbnRlbnRzLmZvckVhY2godGFiID0+IHtcbiAgICAgICAgdGFiLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpO1xuICAgICAgICBpZiAodGFiLmlkID09PSAnc2V0dGluZ3MtdGFiJykge1xuICAgICAgICAgICAgdGFiLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgbG9nZ2VyLmRlYnVnKCflt7Lph43nva7moIfnrb7pobXnirbmgIHkuLrpu5jorqQnKTtcbn1cblxubG9nZ2VyLmRlYnVnKCflt7LliqDovb3moIfnrb7pobXnu4Tku7YnKTsgIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///792\n");
/***/ }),
/***/ 879:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ copyToClipboard: () => (/* binding */ copyToClipboard)\n/* harmony export */ });\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(610);\n/**\n * 剪贴板工具服务\n */\n\n/**\n * 复制文本到剪贴板\n * @param text 要复制的文本\n * @returns 是否成功复制\n */\nfunction copyToClipboard(text) {\n try {\n // 创建一个辅助的文本域\n const textarea = document.createElement('textarea');\n textarea.value = text;\n textarea.style.position = 'fixed'; // 避免滚动到底部\n textarea.style.opacity = '0';\n document.body.appendChild(textarea);\n // 选择文本并复制\n textarea.select();\n const success = document.execCommand('copy');\n document.body.removeChild(textarea);\n // 显示复制成功提示\n if (success) {\n showCopySuccessToast(text);\n }\n return success;\n }\n catch (error) {\n _logger__WEBPACK_IMPORTED_MODULE_0__.logger.error('复制到剪贴板失败:', error);\n return false;\n }\n}\n/**\n * 显示复制成功的提示\n * @param text 复制的内容\n */\nfunction showCopySuccessToast(text) {\n // 检查是否已有提示框\n let toast = document.getElementById('copy-toast');\n if (!toast) {\n // 创建提示框\n toast = document.createElement('div');\n toast.id = 'copy-toast';\n toast.style.cssText = `\n position: fixed;\n bottom: 20px;\n right: 20px;\n background-color: rgba(0, 0, 0, 0.7);\n color: white;\n padding: 10px 15px;\n border-radius: 4px;\n font-size: 14px;\n max-width: 80%;\n z-index: 10001;\n opacity: 0;\n transition: opacity 0.3s ease;\n `;\n document.body.appendChild(toast);\n }\n // 裁剪显示的内容\n const displayText = text.length > 50 ? text.substring(0, 47) + '...' : text;\n toast.textContent = `已复制: ${displayText}`;\n toast.style.opacity = '1';\n // 设置定时器让提示消失\n setTimeout(() => {\n if (toast) {\n toast.style.opacity = '0';\n // 提示消失后删除元素\n setTimeout(() => {\n if (toast && toast.parentNode) {\n toast.parentNode.removeChild(toast);\n }\n }, 300);\n }\n }, 2000);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODc5LmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0dBRUc7QUFFZ0M7QUFFbkM7Ozs7R0FJRztBQUNJLFNBQVMsZUFBZSxDQUFDLElBQVk7SUFDeEMsSUFBSSxDQUFDO1FBQ0QsYUFBYTtRQUNiLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEQsUUFBUSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDdEIsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLENBQUUsVUFBVTtRQUM5QyxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7UUFDN0IsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFcEMsVUFBVTtRQUNWLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXBDLFdBQVc7UUFDWCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1Ysb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsMkNBQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7QUFDTCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FBQyxJQUFZO0lBQ3RDLFlBQVk7SUFDWixJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNULFFBQVE7UUFDUixLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxLQUFLLENBQUMsRUFBRSxHQUFHLFlBQVksQ0FBQztRQUN4QixLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRzs7Ozs7Ozs7Ozs7OztTQWFyQixDQUFDO1FBQ0YsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFVBQVU7SUFDVixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUUsS0FBSyxDQUFDLFdBQVcsR0FBRyxRQUFRLFdBQVcsRUFBRSxDQUFDO0lBQzFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUUxQixhQUFhO0lBQ2IsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNaLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7WUFFMUIsWUFBWTtZQUNaLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUM1QixLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDeEMsQ0FBQztZQUNMLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNaLENBQUM7SUFDTCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDYixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYXN0LWV4cGxvcmVyLWhlbHBlci8uL3NyYy9jbGlwYm9hcmQvY2xpcGJvYXJkLnNlcnZpY2UudHM/M2U1MSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOWJqui0tOadv+W3peWFt+acjeWKoVxuICovXG5cbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL2xvZ2dlcic7XG5cbi8qKlxuICog5aSN5Yi25paH5pys5Yiw5Ymq6LS05p2/XG4gKiBAcGFyYW0gdGV4dCDopoHlpI3liLbnmoTmlofmnKxcbiAqIEByZXR1cm5zIOaYr+WQpuaIkOWKn+WkjeWItlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29weVRvQ2xpcGJvYXJkKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIOWIm+W7uuS4gOS4qui+heWKqeeahOaWh+acrOWfn1xuICAgICAgICBjb25zdCB0ZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XG4gICAgICAgIHRleHRhcmVhLnZhbHVlID0gdGV4dDtcbiAgICAgICAgdGV4dGFyZWEuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnOyAgLy8g6YG/5YWN5rua5Yqo5Yiw5bqV6YOoXG4gICAgICAgIHRleHRhcmVhLnN0eWxlLm9wYWNpdHkgPSAnMCc7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGV4dGFyZWEpO1xuICAgICAgICBcbiAgICAgICAgLy8g6YCJ5oup5paH5pys5bm25aSN5Yi2XG4gICAgICAgIHRleHRhcmVhLnNlbGVjdCgpO1xuICAgICAgICBjb25zdCBzdWNjZXNzID0gZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0ZXh0YXJlYSk7XG4gICAgICAgIFxuICAgICAgICAvLyDmmL7npLrlpI3liLbmiJDlip/mj5DnpLpcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHNob3dDb3B5U3VjY2Vzc1RvYXN0KHRleHQpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoJ+WkjeWItuWIsOWJqui0tOadv+Wksei0pTonLCBlcnJvcik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbi8qKlxuICog5pi+56S65aSN5Yi25oiQ5Yqf55qE5o+Q56S6XG4gKiBAcGFyYW0gdGV4dCDlpI3liLbnmoTlhoXlrrlcbiAqL1xuZnVuY3Rpb24gc2hvd0NvcHlTdWNjZXNzVG9hc3QodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8g5qOA5p+l5piv5ZCm5bey5pyJ5o+Q56S65qGGXG4gICAgbGV0IHRvYXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvcHktdG9hc3QnKTtcbiAgICBpZiAoIXRvYXN0KSB7XG4gICAgICAgIC8vIOWIm+W7uuaPkOekuuahhlxuICAgICAgICB0b2FzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0b2FzdC5pZCA9ICdjb3B5LXRvYXN0JztcbiAgICAgICAgdG9hc3Quc3R5bGUuY3NzVGV4dCA9IGBcbiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgICAgIGJvdHRvbTogMjBweDtcbiAgICAgICAgICAgIHJpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjcpO1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgcGFkZGluZzogMTBweCAxNXB4O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA4MCU7XG4gICAgICAgICAgICB6LWluZGV4OiAxMDAwMTtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcbiAgICAgICAgYDtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0b2FzdCk7XG4gICAgfVxuICAgIFxuICAgIC8vIOijgeWJquaYvuekuueahOWGheWuuVxuICAgIGNvbnN0IGRpc3BsYXlUZXh0ID0gdGV4dC5sZW5ndGggPiA1MCA/IHRleHQuc3Vic3RyaW5nKDAsIDQ3KSArICcuLi4nIDogdGV4dDtcbiAgICB0b2FzdC50ZXh0Q29udGVudCA9IGDlt7LlpI3liLY6ICR7ZGlzcGxheVRleHR9YDtcbiAgICB0b2FzdC5zdHlsZS5vcGFjaXR5ID0gJzEnO1xuICAgIFxuICAgIC8vIOiuvue9ruWumuaXtuWZqOiuqeaPkOekuua2iOWksVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodG9hc3QpIHtcbiAgICAgICAgICAgIHRvYXN0LnN0eWxlLm9wYWNpdHkgPSAnMCc7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIOaPkOekuua2iOWkseWQjuWIoOmZpOWFg+e0oFxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRvYXN0ICYmIHRvYXN0LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3QucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0b2FzdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgfVxuICAgIH0sIDIwMDApO1xufSAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///879\n");
/***/ }),
/***/ 920:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createAboutTabContent: () => (/* reexport safe */ _about_tab_component__WEBPACK_IMPORTED_MODULE_0__.createAboutTabContent),\n/* harmony export */ getAboutTabStyles: () => (/* reexport safe */ _about_tab_component__WEBPACK_IMPORTED_MODULE_0__.getAboutTabStyles),\n/* harmony export */ getRepoStatsFromCache: () => (/* reexport safe */ _about_tab_component__WEBPACK_IMPORTED_MODULE_0__.getRepoStatsFromCache)\n/* harmony export */ });\n/* harmony import */ var _about_tab_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(126);\n/**\n * 关于标签页组件 - 入口文件\n */\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTIwLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7R0FFRztBQU00QiIsInNvdXJjZXMiOlsid2VicGFjazovL2FzdC1leHBsb3Jlci1oZWxwZXIvLi9zcmMvdWkvYWJvdXQtdGFiL2luZGV4LnRzP2FiNDIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDlhbPkuo7moIfnrb7pobXnu4Tku7YgLSDlhaXlj6Pmlofku7ZcbiAqL1xuXG5leHBvcnQgeyBcbiAgICBnZXRBYm91dFRhYlN0eWxlcyxcbiAgICBjcmVhdGVBYm91dFRhYkNvbnRlbnQsXG4gICAgZ2V0UmVwb1N0YXRzRnJvbUNhY2hlXG59IGZyb20gJy4vYWJvdXQtdGFiLmNvbXBvbmVudCc7ICJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///920\n");
/***/ }),
/***/ 963:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createSettingsTabContent: () => (/* binding */ createSettingsTabContent)\n/* harmony export */ });\n/**\n * 设置标签页组件 - 模板文件\n */\n/**\n * 创建设置标签页内容\n * @param settings 当前设置\n * @returns 设置标签页的HTML内容\n */\nfunction createSettingsTabContent(settings) {\n return `\n <div class=\"tab-content active\" id=\"settings-tab\">\n <div class=\"setting-item\">\n <label>\n <input type=\"checkbox\" id=\"hide-toolbar\" ${settings.hideToolbar ? 'checked' : ''}>\n 隐藏工具栏\n </label>\n <p class=\"description\">隐藏AST Explorer顶部工具栏,增大视图空间</p>\n </div>\n </div>\n `;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTYzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7R0FFRztBQUlIOzs7O0dBSUc7QUFDSSxTQUFTLHdCQUF3QixDQUFDLFFBQWtCO0lBQ3ZELE9BQU87Ozs7K0RBSW9ELFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTs7Ozs7O0tBTS9GLENBQUM7QUFDTixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYXN0LWV4cGxvcmVyLWhlbHBlci8uL3NyYy91aS9zZXR0aW5ncy10YWIvc2V0dGluZ3MtdGFiLnRlbXBsYXRlLnRzPzFkY2EiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDorr7nva7moIfnrb7pobXnu4Tku7YgLSDmqKHmnb/mlofku7ZcbiAqL1xuXG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gJy4uLy4uL3NldHRpbmdzL3NldHRpbmdzLnNlcnZpY2UnO1xuXG4vKipcbiAqIOWIm+W7uuiuvue9ruagh+etvumhteWGheWuuVxuICogQHBhcmFtIHNldHRpbmdzIOW9k+WJjeiuvue9rlxuICogQHJldHVybnMg6K6+572u5qCH562+6aG155qESFRNTOWGheWuuVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2V0dGluZ3NUYWJDb250ZW50KHNldHRpbmdzOiBTZXR0aW5ncyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50IGFjdGl2ZVwiIGlkPVwic2V0dGluZ3MtdGFiXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2V0dGluZy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJoaWRlLXRvb2xiYXJcIiAke3NldHRpbmdzLmhpZGVUb29sYmFyID8gJ2NoZWNrZWQnIDogJyd9PlxuICAgICAgICAgICAgICAgICAgICDpmpDol4/lt6XlhbfmoI9cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZGVzY3JpcHRpb25cIj7pmpDol49BU1QgRXhwbG9yZXLpobbpg6jlt6XlhbfmoI/vvIzlop7lpKfop4blm77nqbrpl7Q8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYDtcbn0gIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///963\n");
/***/ }),
/***/ 974:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ collectSettingsFromForm: () => (/* binding */ collectSettingsFromForm),\n/* harmony export */ createSettingsTabContent: () => (/* reexport safe */ _settings_tab_template__WEBPACK_IMPORTED_MODULE_2__.createSettingsTabContent),\n/* harmony export */ getSettingsTabStyles: () => (/* reexport safe */ _settings_tab_styles__WEBPACK_IMPORTED_MODULE_1__.getSettingsTabStyles)\n/* harmony export */ });\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(610);\n/* harmony import */ var _settings_tab_styles__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(635);\n/* harmony import */ var _settings_tab_template__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(963);\n/**\n * 设置标签页组件 - 逻辑文件\n */\n\n// 导出公共API\n\n\n/**\n * 从表单中收集设置数据\n * @returns 更新的设置对象\n */\nfunction collectSettingsFromForm() {\n var _a;\n const hideToolbarElement = document.getElementById('hide-toolbar');\n console.log('🔍 隐藏工具栏复选框元素:', hideToolbarElement);\n // 移除视觉反馈,避免用户误解\n // 仅在控制台打印日志,不在界面显示信息\n console.log('🔍 正在读取设置选项状态...');\n // 确保即使元素不存在也能获取到默认值\n const hideToolbar = (_a = hideToolbarElement === null || hideToolbarElement === void 0 ? void 0 : hideToolbarElement.checked) !== null && _a !== void 0 ? _a : true;\n console.log('✅ 收集到的hideToolbar值:', hideToolbar);\n return {\n hideToolbar\n };\n}\n_logger__WEBPACK_IMPORTED_MODULE_0__.logger.debug('已加载设置标签页组件');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTc0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztHQUVHO0FBR21DO0FBSXRDLFVBQVU7QUFDbUQ7QUFDTTtBQUVuRTs7O0dBR0c7QUFDSSxTQUFTLHVCQUF1Qjs7SUFFbkMsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBcUIsQ0FBQztJQUN2RixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFFbEQsZ0JBQWdCO0lBQ2hCLHFCQUFxQjtJQUNyQixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFaEMsb0JBQW9CO0lBQ3BCLE1BQU0sV0FBVyxHQUFHLHdCQUFrQixhQUFsQixrQkFBa0IsdUJBQWxCLGtCQUFrQixDQUFFLE9BQU8sbUNBQUksSUFBSSxDQUFDO0lBRXhELE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFaEQsT0FBTztRQUNILFdBQVc7S0FDZCxDQUFDO0FBQ04sQ0FBQztBQUVELDJDQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYXN0LWV4cGxvcmVyLWhlbHBlci8uL3NyYy91aS9zZXR0aW5ncy10YWIvc2V0dGluZ3MtdGFiLmNvbXBvbmVudC50cz85MWZlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog6K6+572u5qCH562+6aG157uE5Lu2IC0g6YC76L6R5paH5Lu2XG4gKi9cblxuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9zZXR0aW5ncy9zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBnZXRTZXR0aW5nc1RhYlN0eWxlcyB9IGZyb20gJy4vc2V0dGluZ3MtdGFiLnN0eWxlcyc7XG5pbXBvcnQgeyBjcmVhdGVTZXR0aW5nc1RhYkNvbnRlbnQgfSBmcm9tICcuL3NldHRpbmdzLXRhYi50ZW1wbGF0ZSc7XG5cbi8vIOWvvOWHuuWFrOWFsUFQSVxuZXhwb3J0IHsgZ2V0U2V0dGluZ3NUYWJTdHlsZXMgfSBmcm9tICcuL3NldHRpbmdzLXRhYi5zdHlsZXMnO1xuZXhwb3J0IHsgY3JlYXRlU2V0dGluZ3NUYWJDb250ZW50IH0gZnJvbSAnLi9zZXR0aW5ncy10YWIudGVtcGxhdGUnO1xuXG4vKipcbiAqIOS7juihqOWNleS4reaUtumbhuiuvue9ruaVsOaNrlxuICogQHJldHVybnMg5pu05paw55qE6K6+572u5a+56LGhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2xsZWN0U2V0dGluZ3NGcm9tRm9ybSgpOiBQYXJ0aWFsPFNldHRpbmdzPiB7XG4gICAgXG4gICAgY29uc3QgaGlkZVRvb2xiYXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpZGUtdG9vbGJhcicpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc29sZS5sb2coJ/CflI0g6ZqQ6JeP5bel5YW35qCP5aSN6YCJ5qGG5YWD57SgOicsIGhpZGVUb29sYmFyRWxlbWVudCk7XG4gICAgXG4gICAgLy8g56e76Zmk6KeG6KeJ5Y+N6aaI77yM6YG/5YWN55So5oi36K+v6KejXG4gICAgLy8g5LuF5Zyo5o6n5Yi25Y+w5omT5Y2w5pel5b+X77yM5LiN5Zyo55WM6Z2i5pi+56S65L+h5oGvXG4gICAgY29uc29sZS5sb2coJ/CflI0g5q2j5Zyo6K+75Y+W6K6+572u6YCJ6aG554q25oCBLi4uJyk7XG4gICAgXG4gICAgLy8g56Gu5L+d5Y2z5L2/5YWD57Sg5LiN5a2Y5Zyo5Lmf6IO96I635Y+W5Yiw6buY6K6k5YC8XG4gICAgY29uc3QgaGlkZVRvb2xiYXIgPSBoaWRlVG9vbGJhckVsZW1lbnQ/LmNoZWNrZWQgPz8gdHJ1ZTtcbiAgICBcbiAgICBjb25zb2xlLmxvZygn4pyFIOaUtumbhuWIsOeahGhpZGVUb29sYmFy5YC8OicsIGhpZGVUb29sYmFyKTtcbiAgICBcbiAgICByZXR1cm4ge1xuICAgICAgICBoaWRlVG9vbGJhclxuICAgIH07XG59XG5cbmxvZ2dlci5kZWJ1Zygn5bey5Yqg6L296K6+572u5qCH562+6aG157uE5Lu2Jyk7ICJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///974\n");
/***/ }),
/***/ 983:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _settings_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(663);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _settings_service__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _settings_service__WEBPACK_IMPORTED_MODULE_0__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/**\n * 设置模块入口\n */\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTgzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0dBRUc7QUFFZ0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9hc3QtZXhwbG9yZXItaGVscGVyLy4vc3JjL3NldHRpbmdzL2luZGV4LnRzPzFkOGEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDorr7nva7mqKHlnZflhaXlj6NcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3NldHRpbmdzLnNlcnZpY2UnOyAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///983\n");
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/************************************************************************/
/******/
/******/ // startup
/******/ // Load entry module and return exports
/******/ // This entry module can't be inlined because the eval-source-map devtool is used.
/******/ var __webpack_exports__ = __webpack_require__(729);
/******/
/******/ })()
;