├── .gitignore ├── panel ├── src │ ├── vite-env.d.ts │ ├── assets │ │ ├── responsive.css │ │ ├── vue.svg │ │ └── flex.css │ ├── util │ │ ├── StringUtils.ts │ │ └── request.ts │ ├── model │ │ └── PalApiModel.ts │ ├── main.ts │ ├── view │ │ ├── Logs.vue │ │ ├── Operations.vue │ │ └── Dashboard.vue │ ├── App.vue │ ├── api │ │ └── PalApi.ts │ ├── components │ │ └── HelloWorld.vue │ └── style.css ├── env.js ├── .vscode │ └── extensions.json ├── public │ └── favicon.ico ├── vite.config.ts ├── tsconfig.node.json ├── .gitignore ├── index.html ├── package.json ├── tsconfig.json ├── README.md └── package-lock.json ├── panel-screeshot.png ├── helper_config.json ├── state └── state.go ├── common └── oom.go ├── settings └── settigns.go ├── main.go ├── pal ├── players.go ├── rcn │ └── rcn.go └── operation.go ├── go.mod ├── README.md ├── api └── api.go └── go.sum /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | pal-server-helper -------------------------------------------------------------------------------- /panel/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /panel/env.js: -------------------------------------------------------------------------------- 1 | window.palServerHelper = {"apiUrl": "http://localhost:8311"} -------------------------------------------------------------------------------- /panel-screeshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingRadish/palworld-server-helper/HEAD/panel-screeshot.png -------------------------------------------------------------------------------- /panel/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] 3 | } 4 | -------------------------------------------------------------------------------- /panel/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlyingRadish/palworld-server-helper/HEAD/panel/public/favicon.ico -------------------------------------------------------------------------------- /panel/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [vue()], 7 | }) 8 | -------------------------------------------------------------------------------- /panel/src/assets/responsive.css: -------------------------------------------------------------------------------- 1 | @media only screen and (max-width:768px) { 2 | .for-pc { 3 | display: none !important 4 | } 5 | } 6 | 7 | @media only screen and (min-width:768px) { 8 | .for-phone { 9 | display: none !important 10 | } 11 | } -------------------------------------------------------------------------------- /panel/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "skipLibCheck": true, 5 | "module": "ESNext", 6 | "moduleResolution": "bundler", 7 | "allowSyntheticDefaultImports": true 8 | }, 9 | "include": ["vite.config.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /panel/src/util/StringUtils.ts: -------------------------------------------------------------------------------- 1 | export function startsWith(str: string, prefix: string): boolean { 2 | return str.slice(0, prefix.length) === prefix 3 | } 4 | 5 | export function endsWith(str: string, suffix: string): boolean { 6 | if (str.length < suffix.length) { 7 | return false 8 | } else { 9 | return str.slice(str.length - suffix.length) === suffix 10 | } 11 | } -------------------------------------------------------------------------------- /panel/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | 26 | /panel/env.js 27 | -------------------------------------------------------------------------------- /helper_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "ip": "172.16.91.1", 3 | "port": 25570, 4 | "password": "gudoo2018", 5 | "retryDelay": 10, 6 | "retryCount": 3, 7 | "rebootScriptPath": "/path/to/you/restart.sh", 8 | "rebootSeconds": 60, 9 | "oomThreshold": 90, 10 | "oomCheckIntervalSeconds": 5, 11 | "playerCheckInterval": 5, 12 | "apiHost": "localhost", 13 | "apiPort": 8311, 14 | "panelPath": "/path/to/panel" 15 | } -------------------------------------------------------------------------------- /state/state.go: -------------------------------------------------------------------------------- 1 | package state 2 | 3 | var currentState ServerState = Unknown 4 | 5 | type ServerState string 6 | 7 | const ( 8 | Unknown ServerState = "unknwon" 9 | Running ServerState = "running" 10 | Rebooting ServerState = "rebooting" 11 | ) 12 | 13 | func Update(newState ServerState) { 14 | currentState = newState 15 | } 16 | 17 | func Current() ServerState { 18 | return currentState 19 | } 20 | 21 | func IsRunning() bool { 22 | return currentState == Running 23 | } 24 | -------------------------------------------------------------------------------- /panel/src/assets/vue.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /panel/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 帕鲁世界服务器助手 8 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /panel/src/model/PalApiModel.ts: -------------------------------------------------------------------------------- 1 | export interface RebootParam { 2 | notifyReboot: boolean 3 | } 4 | 5 | export interface BroadcastParam { 6 | content: string 7 | } 8 | 9 | export interface PalPlayer { 10 | name: string 11 | uid: string 12 | steamId: string 13 | } 14 | 15 | export interface MemStatus { 16 | total: number 17 | used: number 18 | } 19 | 20 | export interface RconParam { 21 | command: string 22 | } 23 | 24 | export interface SimpleParam { 25 | data: string 26 | } 27 | 28 | export interface ServerStateResponse { 29 | state: string 30 | } -------------------------------------------------------------------------------- /panel/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "panel", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "axios": "^1.6.7", 13 | "copy-to-clipboard": "^3.3.3", 14 | "moment": "^2.30.1", 15 | "vue": "^3.3.11", 16 | "vue-router": "^4.2.5" 17 | }, 18 | "devDependencies": { 19 | "@vitejs/plugin-vue": "^4.5.2", 20 | "naive-ui": "^2.37.3", 21 | "typescript": "^5.2.2", 22 | "vite": "^5.0.8", 23 | "vue-tsc": "^1.8.25" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /panel/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from "vue" 2 | import "./style.css" 3 | import "./assets/flex.css" 4 | import "./assets/responsive.css" 5 | import App from "./App.vue" 6 | import { 7 | // create naive ui 8 | create, 9 | // component 10 | NButton, 11 | NCard, 12 | NInput, 13 | NInputGroup, 14 | NProgress, 15 | NSpace, 16 | NSwitch, 17 | NDataTable, 18 | NMessageProvider 19 | } from "naive-ui" 20 | 21 | const naive = create({ 22 | components: [ 23 | NButton, 24 | NInput, 25 | NInputGroup, 26 | NCard, 27 | NSwitch, 28 | NSpace, 29 | NProgress, 30 | NDataTable, 31 | NMessageProvider 32 | ], 33 | }) 34 | 35 | const app = createApp(App) 36 | app.use(naive) 37 | app.mount("#app") 38 | -------------------------------------------------------------------------------- /panel/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "useDefineForClassFields": true, 5 | "module": "ESNext", 6 | "lib": ["ES2020", "DOM", "DOM.Iterable"], 7 | "skipLibCheck": true, 8 | 9 | /* Bundler mode */ 10 | "moduleResolution": "bundler", 11 | "allowImportingTsExtensions": true, 12 | "resolveJsonModule": true, 13 | "isolatedModules": true, 14 | "noEmit": true, 15 | "jsx": "preserve", 16 | 17 | /* Linting */ 18 | "strict": true, 19 | "noUnusedLocals": true, 20 | "noUnusedParameters": true, 21 | "noFallthroughCasesInSwitch": true 22 | }, 23 | "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"], 24 | "references": [{ "path": "./tsconfig.node.json" }] 25 | } 26 | -------------------------------------------------------------------------------- /panel/src/util/request.ts: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | const apiUrl = window.palServerHelper.apiUrl 4 | // const apiUrl = "http://localhost:8311" 5 | // console.log("api", apiUrl) 6 | 7 | const request = axios.create({ 8 | baseURL: apiUrl, 9 | timeout: 180000, 10 | }) 11 | 12 | const errorHandler = async (error: any) => { 13 | return Promise.reject(error) 14 | } 15 | 16 | request.interceptors.request.use((config) => { 17 | const token = window.localStorage.getItem("server-helper-token") 18 | 19 | if (token) { 20 | config.headers.Authorization = token 21 | } 22 | return config 23 | }, errorHandler) 24 | 25 | request.interceptors.response.use((response) => { 26 | return response.data 27 | }, errorHandler) 28 | 29 | export default request 30 | 31 | export { request as axios } 32 | -------------------------------------------------------------------------------- /panel/src/view/Logs.vue: -------------------------------------------------------------------------------- 1 | 13 | 31 | 32 | -------------------------------------------------------------------------------- /panel/src/App.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | 20 | 21 | 33 | -------------------------------------------------------------------------------- /panel/src/api/PalApi.ts: -------------------------------------------------------------------------------- 1 | import request from "../util/request" 2 | import { 3 | RebootParam, 4 | BroadcastParam, 5 | PalPlayer, 6 | MemStatus, 7 | RconParam, 8 | SimpleParam, 9 | ServerStateResponse, 10 | } from "../model/PalApiModel" 11 | 12 | export function getMemoryStatus(): Promise { 13 | return request.get(`/api/memory`) 14 | } 15 | 16 | export function getOnlinePlayers(): Promise> { 17 | return request.get(`/api/players`) 18 | } 19 | 20 | export function broadcast(param: BroadcastParam): Promise { 21 | return request.post(`/api/broadcast`, param) 22 | } 23 | 24 | export function rcon(param: RconParam): Promise { 25 | return request.post(`/api/rcon`, param) 26 | } 27 | 28 | export function reboot(param: RebootParam): Promise { 29 | return request.post(`/api/reboot`, param) 30 | } 31 | 32 | export function getServerState(): Promise { 33 | return request.get(`/api/state`) 34 | } -------------------------------------------------------------------------------- /panel/src/components/HelloWorld.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 33 | 34 | 39 | -------------------------------------------------------------------------------- /common/oom.go: -------------------------------------------------------------------------------- 1 | package common 2 | 3 | import ( 4 | "fmt" 5 | "time" 6 | 7 | "pal-server-helper/pal" 8 | 9 | "github.com/shirou/gopsutil/mem" 10 | ) 11 | 12 | type MemoryStatus struct { 13 | Total uint64 `json:"total"` 14 | Used uint64 `json:"used"` 15 | } 16 | 17 | func MonitorMemoryUsage(threshold float64, checkInterval int) error { 18 | ticker := time.NewTicker(time.Duration(checkInterval) * time.Second) 19 | defer ticker.Stop() 20 | 21 | for { 22 | select { 23 | case <-ticker.C: 24 | memory, err := mem.VirtualMemory() 25 | if err != nil { 26 | fmt.Println("Failed to get memory info:", err) 27 | continue 28 | } 29 | 30 | usedPercent := memory.UsedPercent 31 | // fmt.Println(fmt.Sprintf("Current memory usage: %.2f%%", usedPercent)) 32 | if usedPercent > threshold { 33 | pal.Reboot(true) 34 | } 35 | } 36 | } 37 | } 38 | 39 | func GetMemoryStats() (MemoryStatus, error) { 40 | memory, err := mem.VirtualMemory() 41 | if err != nil { 42 | return MemoryStatus{}, fmt.Errorf("Failed to get memory info:%v", err) 43 | } 44 | 45 | return MemoryStatus{ 46 | Total: memory.Total, 47 | Used: memory.Used, 48 | }, nil 49 | } 50 | -------------------------------------------------------------------------------- /settings/settigns.go: -------------------------------------------------------------------------------- 1 | package settings 2 | 3 | import ( 4 | "encoding/json" 5 | "fmt" 6 | "os" 7 | ) 8 | 9 | type HelperConfig struct { 10 | IP string `json:"ip"` 11 | Port int `json:"port"` 12 | Password string `json:"password"` 13 | RetryCount int `json:"retryCount"` 14 | RetryDelay int `json:"retryDelay"` 15 | RebootScriptPath string `json:"rebootScriptPath"` 16 | RebootSeconds int `json:"rebootSeconds"` 17 | OOMThreshold float64 `json:"oomThreshold"` 18 | OOMCheckInterval int `json:"oomCheckIntervalSeconds"` 19 | PlayerCheckInterval int `json:"playerCheckInterval"` 20 | ApiHost string `json:"apiHost"` 21 | ApiPort int `json:"apiPort"` 22 | PanelPath string `json:"panelPath"` 23 | } 24 | 25 | var configPath = "./helper_config.json" 26 | 27 | func SetConfigPath(path string) { 28 | configPath = path 29 | } 30 | 31 | func LoadConfig() (HelperConfig, error) { 32 | file, err := os.Open(configPath) 33 | if err != nil { 34 | return HelperConfig{}, err 35 | } 36 | defer file.Close() 37 | 38 | decoder := json.NewDecoder(file) 39 | config := HelperConfig{} 40 | err = decoder.Decode(&config) 41 | if err != nil { 42 | return HelperConfig{}, err 43 | } 44 | fmt.Println(config) 45 | return config, nil 46 | } 47 | -------------------------------------------------------------------------------- /panel/src/style.css: -------------------------------------------------------------------------------- 1 | :root { 2 | font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; 3 | line-height: 1.5; 4 | font-weight: 400; 5 | 6 | color-scheme: light dark; 7 | color: rgba(255, 255, 255, 0.87); 8 | background-color: #242424; 9 | 10 | font-synthesis: none; 11 | text-rendering: optimizeLegibility; 12 | -webkit-font-smoothing: antialiased; 13 | -moz-osx-font-smoothing: grayscale; 14 | } 15 | 16 | a { 17 | font-weight: 500; 18 | color: #646cff; 19 | text-decoration: inherit; 20 | } 21 | a:hover { 22 | color: #535bf2; 23 | } 24 | 25 | body { 26 | margin: 0; 27 | display: flex; 28 | place-items: center; 29 | min-width: 320px; 30 | min-height: 100vh; 31 | } 32 | 33 | h1 { 34 | font-size: 3.2em; 35 | line-height: 1.1; 36 | } 37 | 38 | button { 39 | border-radius: 8px; 40 | border: 1px solid transparent; 41 | padding: 0.6em 1.2em; 42 | font-size: 1em; 43 | font-weight: 500; 44 | font-family: inherit; 45 | background-color: #1a1a1a; 46 | cursor: pointer; 47 | transition: border-color 0.25s; 48 | } 49 | button:hover { 50 | border-color: #646cff; 51 | } 52 | button:focus, 53 | button:focus-visible { 54 | outline: 4px auto -webkit-focus-ring-color; 55 | } 56 | 57 | .card { 58 | padding: 2em; 59 | } 60 | 61 | 62 | 63 | @media (prefers-color-scheme: light) { 64 | :root { 65 | color: #213547; 66 | background-color: #ffffff; 67 | } 68 | a:hover { 69 | color: #747bff; 70 | } 71 | button { 72 | background-color: #f9f9f9; 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "flag" 5 | "fmt" 6 | "time" 7 | 8 | "pal-server-helper/api" 9 | "pal-server-helper/common" 10 | "pal-server-helper/pal" 11 | "pal-server-helper/pal/rcn" 12 | "pal-server-helper/settings" 13 | "pal-server-helper/state" 14 | ) 15 | 16 | func main() { 17 | // 定义命令行参数 18 | configFilePath := flag.String("c", "", "Path to the configuration file") 19 | flag.Parse() 20 | var configPath = "" 21 | if *configFilePath == "" { 22 | configPath = "helper_config.json" 23 | fmt.Println("use default config path=" + configPath) 24 | } else { 25 | configPath = *configFilePath 26 | } 27 | settings.SetConfigPath(configPath) 28 | 29 | fmt.Println("pal server helper started") 30 | fmt.Println("loading config...") 31 | config, err := settings.LoadConfig() 32 | if err != nil { 33 | fmt.Println("Error loading config:", err) 34 | return 35 | } 36 | api.UpdatePanelApi(config.ApiHost, config.ApiPort, config.PanelPath) 37 | fmt.Println("Connect to server...") 38 | rcn.Create(config.IP, config.Port, config.Password, config.RetryCount, config.RetryDelay) 39 | client := rcn.GetRCNClient() 40 | fmt.Println("Connected") 41 | state.Update(state.Running) 42 | defer client.Close() 43 | 44 | go common.MonitorMemoryUsage(config.OOMThreshold, config.OOMCheckInterval) 45 | go pal.MonitorPlayers(config.OOMCheckInterval) 46 | go api.RunApiServer(config.ApiPort, config.PanelPath) 47 | 48 | // 主程序持续执行 49 | for { 50 | time.Sleep(10 * time.Second) // 可以根据实际需求调整间隔时间 51 | // 在这里可以添加其他持续执行的逻辑 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /panel/README.md: -------------------------------------------------------------------------------- 1 | # Vue 3 + TypeScript + Vite 2 | 3 | This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 ` 106 | 109 | -------------------------------------------------------------------------------- /panel/src/view/Dashboard.vue: -------------------------------------------------------------------------------- 1 | 22 | 133 | 134 | -------------------------------------------------------------------------------- /api/api.go: -------------------------------------------------------------------------------- 1 | package api 2 | 3 | import ( 4 | "fmt" 5 | "net/http" 6 | "os" 7 | "strconv" 8 | 9 | "pal-server-helper/common" 10 | "pal-server-helper/pal" 11 | "pal-server-helper/pal/rcn" 12 | "pal-server-helper/state" 13 | 14 | "github.com/gin-gonic/gin" 15 | ) 16 | 17 | type rebootParam struct { 18 | NotifyReboot bool `json:"notifyReboot"` 19 | } 20 | 21 | type broadcastParam struct { 22 | Content string `json:"content"` 23 | } 24 | 25 | type rconParam struct { 26 | Command string `json:"command"` 27 | } 28 | 29 | type serverStateResponse struct { 30 | State state.ServerState `json:"state"` 31 | } 32 | 33 | type simpleParam struct { 34 | Data string `json:"data"` 35 | } 36 | 37 | func RunApiServer(port int, panelPath string) { 38 | router := gin.Default() 39 | router.Use(func(c *gin.Context) { 40 | c.Writer.Header().Set("Access-Control-Allow-Origin", "*") 41 | c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE") 42 | c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type") 43 | if c.Request.Method == "OPTIONS" { 44 | c.AbortWithStatus(http.StatusNoContent) 45 | return 46 | } 47 | c.Next() 48 | }) 49 | 50 | router.Static("/panel", panelPath) 51 | router.Static("/assets", panelPath+"/assets") 52 | 53 | // 返回当前在线玩家信息 54 | router.GET("/api/players", func(c *gin.Context) { 55 | if pal.OnlinePlayers == nil { 56 | c.JSON(http.StatusBadRequest, gin.H{"error": "Players not ready"}) 57 | return 58 | } 59 | c.JSON(http.StatusOK, pal.OnlinePlayers) 60 | }) 61 | 62 | /** 游戏内广播 63 | ** content: 广播内容 64 | **/ 65 | router.POST("/api/broadcast", func(c *gin.Context) { 66 | var json broadcastParam 67 | if err := c.ShouldBindJSON(&json); err != nil { 68 | c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) 69 | return 70 | } 71 | if len(json.Content) <= 0 { 72 | c.JSON(http.StatusBadRequest, gin.H{"error": "empty content is not allowed"}) 73 | return 74 | } 75 | rcn.GetRCNClient().Broadcast(json.Content) 76 | c.JSON(http.StatusNoContent, nil) 77 | }) 78 | 79 | /** 转发RCON请求 80 | ** content: 广播内容 81 | **/ 82 | router.POST("/api/rcon", func(c *gin.Context) { 83 | var json rconParam 84 | if err := c.ShouldBindJSON(&json); err != nil { 85 | c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) 86 | return 87 | } 88 | if len(json.Command) <= 0 { 89 | c.JSON(http.StatusBadRequest, gin.H{"error": "empty command is not allowed"}) 90 | return 91 | } 92 | response, err := rcn.GetRCNClient().ExecCommand(json.Command) 93 | if err != nil { 94 | c.JSON(http.StatusBadRequest, gin.H{"error": "Failed to forward rcon command"}) 95 | return 96 | } 97 | c.JSON(http.StatusOK, simpleParam{Data: response}) 98 | }) 99 | 100 | /** 重启服务器 101 | ** notifyReboot: 是否在游戏内广播倒计时 102 | **/ 103 | router.POST("/api/reboot", func(c *gin.Context) { 104 | var json rebootParam 105 | if err := c.ShouldBindJSON(&json); err != nil { 106 | c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) 107 | return 108 | } 109 | pal.Reboot(json.NotifyReboot) 110 | c.JSON(http.StatusNoContent, nil) 111 | }) 112 | 113 | // 返回当前内存占用 114 | router.GET("/api/memory", func(c *gin.Context) { 115 | memStatus, err := common.GetMemoryStats() 116 | if err != nil { 117 | c.JSON(http.StatusBadRequest, gin.H{"error": "Failed to get memory status"}) 118 | return 119 | } 120 | c.JSON(http.StatusOK, memStatus) 121 | }) 122 | 123 | // 返回当前服务器状态 124 | router.GET("/api/state", func(c *gin.Context) { 125 | c.JSON(http.StatusOK, serverStateResponse{State: state.Current()}) 126 | }) 127 | 128 | // Run the server on port 8080 129 | servePort := ":" + strconv.Itoa(port) 130 | fmt.Println("API server serve on " + servePort) 131 | router.Run(servePort) 132 | } 133 | 134 | func UpdatePanelApi(apiHost string, apiPort int, panelPath string) { 135 | filePath := panelPath + "/env.js" 136 | 137 | // 删除文件 138 | if _, err := os.Stat(filePath); err == nil { 139 | err = os.Remove(filePath) 140 | if err != nil { 141 | fmt.Println("Error occurred while deleting file:", err) 142 | return 143 | } 144 | fmt.Println("File deleted successfully") 145 | } 146 | 147 | // 写入新内容 148 | apiURL := fmt.Sprintf("http://%s:%d", apiHost, apiPort) 149 | newContent := fmt.Sprintf(`window.palServerHelper={"apiUrl": "%s"}`, apiURL) 150 | 151 | file, err := os.Create(filePath) 152 | if err != nil { 153 | fmt.Println("Error occurred while creating file:", err) 154 | return 155 | } 156 | defer file.Close() 157 | 158 | _, err = file.WriteString(newContent) 159 | if err != nil { 160 | fmt.Println("Error occurred while writing to file:", err) 161 | return 162 | } 163 | fmt.Println("Update panel api file successfully") 164 | } 165 | -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- 1 | github.com/FlyingRadish/rcong v0.0.0-20240130143735-34a18649a761 h1:4maxbJzzSgrt8WfoJWvhP5xrGmTiaSS1dSTgpWXICd8= 2 | github.com/FlyingRadish/rcong v0.0.0-20240130143735-34a18649a761/go.mod h1:fflByy0u9EC/roVOsYlnEx0gqxKRCJTJ8FSCEaVq/vs= 3 | github.com/FlyingRadish/rcong v0.0.0-20240130150005-ee3494bd96bd h1:3/zFF4emuqwPRmVyTfyt40a7scQ1HsR1krP2J1zLLho= 4 | github.com/FlyingRadish/rcong v0.0.0-20240130150005-ee3494bd96bd/go.mod h1:fflByy0u9EC/roVOsYlnEx0gqxKRCJTJ8FSCEaVq/vs= 5 | github.com/FlyingRadish/rcong v0.0.0-20240130150836-b44ea58ce6b2 h1:DkBqTkQOSCNiVTqZ3w8xDfFSFgJ6uPD5gzl6EXA03qg= 6 | github.com/FlyingRadish/rcong v0.0.0-20240130150836-b44ea58ce6b2/go.mod h1:fflByy0u9EC/roVOsYlnEx0gqxKRCJTJ8FSCEaVq/vs= 7 | github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= 8 | github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= 9 | github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= 10 | github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= 11 | github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams= 12 | github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= 13 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 14 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 15 | github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= 16 | github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= 17 | github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= 18 | github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= 19 | github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= 20 | github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= 21 | github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= 22 | github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= 23 | github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= 24 | github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= 25 | github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= 26 | github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= 27 | github.com/go-playground/validator/v10 v10.14.0 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg/+t63MyGU2n5js= 28 | github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= 29 | github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= 30 | github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= 31 | github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= 32 | github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 33 | github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= 34 | github.com/gorcon/rcon v1.3.4 h1:TExNhWI2mJlqpCg49vajUgznvEZbEzQWKujY1Sy+/AY= 35 | github.com/gorcon/rcon v1.3.4/go.mod h1:46+oSXgPwlRAkcAPStkNnIL1dlcxJweKVNWshy3hDJI= 36 | github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= 37 | github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= 38 | github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= 39 | github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= 40 | github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 41 | github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= 42 | github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= 43 | github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= 44 | github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= 45 | github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= 46 | github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= 47 | github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= 48 | github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= 49 | github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= 50 | github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= 51 | github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= 52 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 53 | github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= 54 | github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= 55 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 56 | github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= 57 | github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= 58 | github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= 59 | github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 60 | github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 61 | github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= 62 | github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= 63 | github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= 64 | github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= 65 | github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= 66 | github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= 67 | github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= 68 | github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= 69 | github.com/xrjr/mcutils v1.5.1 h1:E4ScafEH+joxWVgRCGpJBJfxWX/vaNJDcoS40V91rVo= 70 | github.com/xrjr/mcutils v1.5.1/go.mod h1:43n8cyMIHYjiRM2LFZLVH5Ppz2+RvWppz6OgkLP8Lsk= 71 | github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= 72 | github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= 73 | golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= 74 | golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k= 75 | golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= 76 | golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= 77 | golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= 78 | golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= 79 | golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= 80 | golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 81 | golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 82 | golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 83 | golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= 84 | golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 85 | golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= 86 | golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 87 | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 88 | google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= 89 | google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= 90 | google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= 91 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 92 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 93 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= 94 | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 95 | rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= 96 | -------------------------------------------------------------------------------- /panel/src/assets/flex.css: -------------------------------------------------------------------------------- 1 | .flex-row-base { 2 | display: flex; 3 | flex-direction: row; 4 | flex-wrap: wrap; 5 | justify-content: flex-start; 6 | align-content: flex-start; 7 | align-items: flex-start; 8 | } 9 | .flex-col-base { 10 | display: flex; 11 | flex-direction: column; 12 | flex-wrap: wrap; 13 | justify-content: flex-start; 14 | align-content: flex-start; 15 | align-items: flex-start; 16 | } 17 | .flex-grow-1 { 18 | flex-grow: 1; 19 | } 20 | .flex-row-wrap-start-start-start { 21 | display: flex; 22 | flex-direction: row; 23 | flex-wrap: wrap; 24 | justify-content: flex-start; 25 | align-content: flex-start; 26 | align-items: flex-start; 27 | } 28 | .flex-row-wrap-start-start-center { 29 | display: flex; 30 | flex-direction: row; 31 | flex-wrap: wrap; 32 | justify-content: flex-start; 33 | align-content: flex-start; 34 | align-items: center; 35 | } 36 | .flex-row-wrap-start-start-end { 37 | display: flex; 38 | flex-direction: row; 39 | flex-wrap: wrap; 40 | justify-content: flex-start; 41 | align-content: flex-start; 42 | align-items: flex-end; 43 | } 44 | .flex-row-wrap-start-center-start { 45 | display: flex; 46 | flex-direction: row; 47 | flex-wrap: wrap; 48 | justify-content: flex-start; 49 | align-content: center; 50 | align-items: flex-start; 51 | } 52 | .flex-row-wrap-start-center-center { 53 | display: flex; 54 | flex-direction: row; 55 | flex-wrap: wrap; 56 | justify-content: flex-start; 57 | align-content: center; 58 | align-items: center; 59 | } 60 | .flex-row-wrap-start-center-end { 61 | display: flex; 62 | flex-direction: row; 63 | flex-wrap: wrap; 64 | justify-content: flex-start; 65 | align-content: center; 66 | align-items: flex-end; 67 | } 68 | .flex-row-wrap-start-end-start { 69 | display: flex; 70 | flex-direction: row; 71 | flex-wrap: wrap; 72 | justify-content: flex-start; 73 | align-content: flex-end; 74 | align-items: flex-start; 75 | } 76 | .flex-row-wrap-start-end-center { 77 | display: flex; 78 | flex-direction: row; 79 | flex-wrap: wrap; 80 | justify-content: flex-start; 81 | align-content: flex-end; 82 | align-items: center; 83 | } 84 | .flex-row-wrap-start-end-end { 85 | display: flex; 86 | flex-direction: row; 87 | flex-wrap: wrap; 88 | justify-content: flex-start; 89 | align-content: flex-end; 90 | align-items: flex-end; 91 | } 92 | .flex-row-wrap-center-start-start { 93 | display: flex; 94 | flex-direction: row; 95 | flex-wrap: wrap; 96 | justify-content: center; 97 | align-content: flex-start; 98 | align-items: flex-start; 99 | } 100 | .flex-row-wrap-center-start-center { 101 | display: flex; 102 | flex-direction: row; 103 | flex-wrap: wrap; 104 | justify-content: center; 105 | align-content: flex-start; 106 | align-items: center; 107 | } 108 | .flex-row-wrap-center-start-end { 109 | display: flex; 110 | flex-direction: row; 111 | flex-wrap: wrap; 112 | justify-content: center; 113 | align-content: flex-start; 114 | align-items: flex-end; 115 | } 116 | .flex-row-wrap-center-center-start { 117 | display: flex; 118 | flex-direction: row; 119 | flex-wrap: wrap; 120 | justify-content: center; 121 | align-content: center; 122 | align-items: flex-start; 123 | } 124 | .flex-row-wrap-center-center-center { 125 | display: flex; 126 | flex-direction: row; 127 | flex-wrap: wrap; 128 | justify-content: center; 129 | align-content: center; 130 | align-items: center; 131 | } 132 | .flex-row-wrap-center-center-end { 133 | display: flex; 134 | flex-direction: row; 135 | flex-wrap: wrap; 136 | justify-content: center; 137 | align-content: center; 138 | align-items: flex-end; 139 | } 140 | .flex-row-wrap-center-end-start { 141 | display: flex; 142 | flex-direction: row; 143 | flex-wrap: wrap; 144 | justify-content: center; 145 | align-content: flex-end; 146 | align-items: flex-start; 147 | } 148 | .flex-row-wrap-center-end-center { 149 | display: flex; 150 | flex-direction: row; 151 | flex-wrap: wrap; 152 | justify-content: center; 153 | align-content: flex-end; 154 | align-items: center; 155 | } 156 | .flex-row-wrap-center-end-end { 157 | display: flex; 158 | flex-direction: row; 159 | flex-wrap: wrap; 160 | justify-content: center; 161 | align-content: flex-end; 162 | align-items: flex-end; 163 | } 164 | .flex-row-wrap-end-start-start { 165 | display: flex; 166 | flex-direction: row; 167 | flex-wrap: wrap; 168 | justify-content: flex-end; 169 | align-content: flex-start; 170 | align-items: flex-start; 171 | } 172 | .flex-row-wrap-end-start-center { 173 | display: flex; 174 | flex-direction: row; 175 | flex-wrap: wrap; 176 | justify-content: flex-end; 177 | align-content: flex-start; 178 | align-items: center; 179 | } 180 | .flex-row-wrap-end-start-end { 181 | display: flex; 182 | flex-direction: row; 183 | flex-wrap: wrap; 184 | justify-content: flex-end; 185 | align-content: flex-start; 186 | align-items: flex-end; 187 | } 188 | .flex-row-wrap-end-center-start { 189 | display: flex; 190 | flex-direction: row; 191 | flex-wrap: wrap; 192 | justify-content: flex-end; 193 | align-content: center; 194 | align-items: flex-start; 195 | } 196 | .flex-row-wrap-end-center-center { 197 | display: flex; 198 | flex-direction: row; 199 | flex-wrap: wrap; 200 | justify-content: flex-end; 201 | align-content: center; 202 | align-items: center; 203 | } 204 | .flex-row-wrap-end-center-end { 205 | display: flex; 206 | flex-direction: row; 207 | flex-wrap: wrap; 208 | justify-content: flex-end; 209 | align-content: center; 210 | align-items: flex-end; 211 | } 212 | .flex-row-wrap-end-end-start { 213 | display: flex; 214 | flex-direction: row; 215 | flex-wrap: wrap; 216 | justify-content: flex-end; 217 | align-content: flex-end; 218 | align-items: flex-start; 219 | } 220 | .flex-row-wrap-end-end-center { 221 | display: flex; 222 | flex-direction: row; 223 | flex-wrap: wrap; 224 | justify-content: flex-end; 225 | align-content: flex-end; 226 | align-items: center; 227 | } 228 | .flex-row-wrap-end-end-end { 229 | display: flex; 230 | flex-direction: row; 231 | flex-wrap: wrap; 232 | justify-content: flex-end; 233 | align-content: flex-end; 234 | align-items: flex-end; 235 | } 236 | .flex-row-nowrap-start-start-start { 237 | display: flex; 238 | flex-direction: row; 239 | flex-wrap: nowrap; 240 | justify-content: flex-start; 241 | align-content: flex-start; 242 | align-items: flex-start; 243 | } 244 | .flex-row-nowrap-start-start-center { 245 | display: flex; 246 | flex-direction: row; 247 | flex-wrap: nowrap; 248 | justify-content: flex-start; 249 | align-content: flex-start; 250 | align-items: center; 251 | } 252 | .flex-row-nowrap-start-start-end { 253 | display: flex; 254 | flex-direction: row; 255 | flex-wrap: nowrap; 256 | justify-content: flex-start; 257 | align-content: flex-start; 258 | align-items: flex-end; 259 | } 260 | .flex-row-nowrap-start-center-start { 261 | display: flex; 262 | flex-direction: row; 263 | flex-wrap: nowrap; 264 | justify-content: flex-start; 265 | align-content: center; 266 | align-items: flex-start; 267 | } 268 | .flex-row-nowrap-start-center-center { 269 | display: flex; 270 | flex-direction: row; 271 | flex-wrap: nowrap; 272 | justify-content: flex-start; 273 | align-content: center; 274 | align-items: center; 275 | } 276 | .flex-row-nowrap-start-center-end { 277 | display: flex; 278 | flex-direction: row; 279 | flex-wrap: nowrap; 280 | justify-content: flex-start; 281 | align-content: center; 282 | align-items: flex-end; 283 | } 284 | .flex-row-nowrap-start-end-start { 285 | display: flex; 286 | flex-direction: row; 287 | flex-wrap: nowrap; 288 | justify-content: flex-start; 289 | align-content: flex-end; 290 | align-items: flex-start; 291 | } 292 | .flex-row-nowrap-start-end-center { 293 | display: flex; 294 | flex-direction: row; 295 | flex-wrap: nowrap; 296 | justify-content: flex-start; 297 | align-content: flex-end; 298 | align-items: center; 299 | } 300 | .flex-row-nowrap-start-end-end { 301 | display: flex; 302 | flex-direction: row; 303 | flex-wrap: nowrap; 304 | justify-content: flex-start; 305 | align-content: flex-end; 306 | align-items: flex-end; 307 | } 308 | .flex-row-nowrap-center-start-start { 309 | display: flex; 310 | flex-direction: row; 311 | flex-wrap: nowrap; 312 | justify-content: center; 313 | align-content: flex-start; 314 | align-items: flex-start; 315 | } 316 | .flex-row-nowrap-center-start-center { 317 | display: flex; 318 | flex-direction: row; 319 | flex-wrap: nowrap; 320 | justify-content: center; 321 | align-content: flex-start; 322 | align-items: center; 323 | } 324 | .flex-row-nowrap-center-start-end { 325 | display: flex; 326 | flex-direction: row; 327 | flex-wrap: nowrap; 328 | justify-content: center; 329 | align-content: flex-start; 330 | align-items: flex-end; 331 | } 332 | .flex-row-nowrap-center-center-start { 333 | display: flex; 334 | flex-direction: row; 335 | flex-wrap: nowrap; 336 | justify-content: center; 337 | align-content: center; 338 | align-items: flex-start; 339 | } 340 | .flex-row-nowrap-center-center-center { 341 | display: flex; 342 | flex-direction: row; 343 | flex-wrap: nowrap; 344 | justify-content: center; 345 | align-content: center; 346 | align-items: center; 347 | } 348 | .flex-row-nowrap-center-center-end { 349 | display: flex; 350 | flex-direction: row; 351 | flex-wrap: nowrap; 352 | justify-content: center; 353 | align-content: center; 354 | align-items: flex-end; 355 | } 356 | .flex-row-nowrap-center-end-start { 357 | display: flex; 358 | flex-direction: row; 359 | flex-wrap: nowrap; 360 | justify-content: center; 361 | align-content: flex-end; 362 | align-items: flex-start; 363 | } 364 | .flex-row-nowrap-center-end-center { 365 | display: flex; 366 | flex-direction: row; 367 | flex-wrap: nowrap; 368 | justify-content: center; 369 | align-content: flex-end; 370 | align-items: center; 371 | } 372 | .flex-row-nowrap-center-end-end { 373 | display: flex; 374 | flex-direction: row; 375 | flex-wrap: nowrap; 376 | justify-content: center; 377 | align-content: flex-end; 378 | align-items: flex-end; 379 | } 380 | .flex-row-nowrap-end-start-start { 381 | display: flex; 382 | flex-direction: row; 383 | flex-wrap: nowrap; 384 | justify-content: flex-end; 385 | align-content: flex-start; 386 | align-items: flex-start; 387 | } 388 | .flex-row-nowrap-end-start-center { 389 | display: flex; 390 | flex-direction: row; 391 | flex-wrap: nowrap; 392 | justify-content: flex-end; 393 | align-content: flex-start; 394 | align-items: center; 395 | } 396 | .flex-row-nowrap-end-start-end { 397 | display: flex; 398 | flex-direction: row; 399 | flex-wrap: nowrap; 400 | justify-content: flex-end; 401 | align-content: flex-start; 402 | align-items: flex-end; 403 | } 404 | .flex-row-nowrap-end-center-start { 405 | display: flex; 406 | flex-direction: row; 407 | flex-wrap: nowrap; 408 | justify-content: flex-end; 409 | align-content: center; 410 | align-items: flex-start; 411 | } 412 | .flex-row-nowrap-end-center-center { 413 | display: flex; 414 | flex-direction: row; 415 | flex-wrap: nowrap; 416 | justify-content: flex-end; 417 | align-content: center; 418 | align-items: center; 419 | } 420 | .flex-row-nowrap-end-center-end { 421 | display: flex; 422 | flex-direction: row; 423 | flex-wrap: nowrap; 424 | justify-content: flex-end; 425 | align-content: center; 426 | align-items: flex-end; 427 | } 428 | .flex-row-nowrap-end-end-start { 429 | display: flex; 430 | flex-direction: row; 431 | flex-wrap: nowrap; 432 | justify-content: flex-end; 433 | align-content: flex-end; 434 | align-items: flex-start; 435 | } 436 | .flex-row-nowrap-end-end-center { 437 | display: flex; 438 | flex-direction: row; 439 | flex-wrap: nowrap; 440 | justify-content: flex-end; 441 | align-content: flex-end; 442 | align-items: center; 443 | } 444 | .flex-row-nowrap-end-end-end { 445 | display: flex; 446 | flex-direction: row; 447 | flex-wrap: nowrap; 448 | justify-content: flex-end; 449 | align-content: flex-end; 450 | align-items: flex-end; 451 | } 452 | .flex-col-wrap-start-start-start { 453 | display: flex; 454 | flex-direction: column; 455 | flex-wrap: wrap; 456 | justify-content: flex-start; 457 | align-content: flex-start; 458 | align-items: flex-start; 459 | } 460 | .flex-col-wrap-start-start-center { 461 | display: flex; 462 | flex-direction: column; 463 | flex-wrap: wrap; 464 | justify-content: flex-start; 465 | align-content: flex-start; 466 | align-items: center; 467 | } 468 | .flex-col-wrap-start-start-end { 469 | display: flex; 470 | flex-direction: column; 471 | flex-wrap: wrap; 472 | justify-content: flex-start; 473 | align-content: flex-start; 474 | align-items: flex-end; 475 | } 476 | .flex-col-wrap-start-center-start { 477 | display: flex; 478 | flex-direction: column; 479 | flex-wrap: wrap; 480 | justify-content: flex-start; 481 | align-content: center; 482 | align-items: flex-start; 483 | } 484 | .flex-col-wrap-start-center-center { 485 | display: flex; 486 | flex-direction: column; 487 | flex-wrap: wrap; 488 | justify-content: flex-start; 489 | align-content: center; 490 | align-items: center; 491 | } 492 | .flex-col-wrap-start-center-end { 493 | display: flex; 494 | flex-direction: column; 495 | flex-wrap: wrap; 496 | justify-content: flex-start; 497 | align-content: center; 498 | align-items: flex-end; 499 | } 500 | .flex-col-wrap-start-end-start { 501 | display: flex; 502 | flex-direction: column; 503 | flex-wrap: wrap; 504 | justify-content: flex-start; 505 | align-content: flex-end; 506 | align-items: flex-start; 507 | } 508 | .flex-col-wrap-start-end-center { 509 | display: flex; 510 | flex-direction: column; 511 | flex-wrap: wrap; 512 | justify-content: flex-start; 513 | align-content: flex-end; 514 | align-items: center; 515 | } 516 | .flex-col-wrap-start-end-end { 517 | display: flex; 518 | flex-direction: column; 519 | flex-wrap: wrap; 520 | justify-content: flex-start; 521 | align-content: flex-end; 522 | align-items: flex-end; 523 | } 524 | .flex-col-wrap-center-start-start { 525 | display: flex; 526 | flex-direction: column; 527 | flex-wrap: wrap; 528 | justify-content: center; 529 | align-content: flex-start; 530 | align-items: flex-start; 531 | } 532 | .flex-col-wrap-center-start-center { 533 | display: flex; 534 | flex-direction: column; 535 | flex-wrap: wrap; 536 | justify-content: center; 537 | align-content: flex-start; 538 | align-items: center; 539 | } 540 | .flex-col-wrap-center-start-end { 541 | display: flex; 542 | flex-direction: column; 543 | flex-wrap: wrap; 544 | justify-content: center; 545 | align-content: flex-start; 546 | align-items: flex-end; 547 | } 548 | .flex-col-wrap-center-center-start { 549 | display: flex; 550 | flex-direction: column; 551 | flex-wrap: wrap; 552 | justify-content: center; 553 | align-content: center; 554 | align-items: flex-start; 555 | } 556 | .flex-col-wrap-center-center-center { 557 | display: flex; 558 | flex-direction: column; 559 | flex-wrap: wrap; 560 | justify-content: center; 561 | align-content: center; 562 | align-items: center; 563 | } 564 | .flex-col-wrap-center-center-end { 565 | display: flex; 566 | flex-direction: column; 567 | flex-wrap: wrap; 568 | justify-content: center; 569 | align-content: center; 570 | align-items: flex-end; 571 | } 572 | .flex-col-wrap-center-end-start { 573 | display: flex; 574 | flex-direction: column; 575 | flex-wrap: wrap; 576 | justify-content: center; 577 | align-content: flex-end; 578 | align-items: flex-start; 579 | } 580 | .flex-col-wrap-center-end-center { 581 | display: flex; 582 | flex-direction: column; 583 | flex-wrap: wrap; 584 | justify-content: center; 585 | align-content: flex-end; 586 | align-items: center; 587 | } 588 | .flex-col-wrap-center-end-end { 589 | display: flex; 590 | flex-direction: column; 591 | flex-wrap: wrap; 592 | justify-content: center; 593 | align-content: flex-end; 594 | align-items: flex-end; 595 | } 596 | .flex-col-wrap-end-start-start { 597 | display: flex; 598 | flex-direction: column; 599 | flex-wrap: wrap; 600 | justify-content: flex-end; 601 | align-content: flex-start; 602 | align-items: flex-start; 603 | } 604 | .flex-col-wrap-end-start-center { 605 | display: flex; 606 | flex-direction: column; 607 | flex-wrap: wrap; 608 | justify-content: flex-end; 609 | align-content: flex-start; 610 | align-items: center; 611 | } 612 | .flex-col-wrap-end-start-end { 613 | display: flex; 614 | flex-direction: column; 615 | flex-wrap: wrap; 616 | justify-content: flex-end; 617 | align-content: flex-start; 618 | align-items: flex-end; 619 | } 620 | .flex-col-wrap-end-center-start { 621 | display: flex; 622 | flex-direction: column; 623 | flex-wrap: wrap; 624 | justify-content: flex-end; 625 | align-content: center; 626 | align-items: flex-start; 627 | } 628 | .flex-col-wrap-end-center-center { 629 | display: flex; 630 | flex-direction: column; 631 | flex-wrap: wrap; 632 | justify-content: flex-end; 633 | align-content: center; 634 | align-items: center; 635 | } 636 | .flex-col-wrap-end-center-end { 637 | display: flex; 638 | flex-direction: column; 639 | flex-wrap: wrap; 640 | justify-content: flex-end; 641 | align-content: center; 642 | align-items: flex-end; 643 | } 644 | .flex-col-wrap-end-end-start { 645 | display: flex; 646 | flex-direction: column; 647 | flex-wrap: wrap; 648 | justify-content: flex-end; 649 | align-content: flex-end; 650 | align-items: flex-start; 651 | } 652 | .flex-col-wrap-end-end-center { 653 | display: flex; 654 | flex-direction: column; 655 | flex-wrap: wrap; 656 | justify-content: flex-end; 657 | align-content: flex-end; 658 | align-items: center; 659 | } 660 | .flex-col-wrap-end-end-end { 661 | display: flex; 662 | flex-direction: column; 663 | flex-wrap: wrap; 664 | justify-content: flex-end; 665 | align-content: flex-end; 666 | align-items: flex-end; 667 | } 668 | .flex-col-nowrap-start-start-start { 669 | display: flex; 670 | flex-direction: column; 671 | flex-wrap: nowrap; 672 | justify-content: flex-start; 673 | align-content: flex-start; 674 | align-items: flex-start; 675 | } 676 | .flex-col-nowrap-start-start-center { 677 | display: flex; 678 | flex-direction: column; 679 | flex-wrap: nowrap; 680 | justify-content: flex-start; 681 | align-content: flex-start; 682 | align-items: center; 683 | } 684 | .flex-col-nowrap-start-start-end { 685 | display: flex; 686 | flex-direction: column; 687 | flex-wrap: nowrap; 688 | justify-content: flex-start; 689 | align-content: flex-start; 690 | align-items: flex-end; 691 | } 692 | .flex-col-nowrap-start-center-start { 693 | display: flex; 694 | flex-direction: column; 695 | flex-wrap: nowrap; 696 | justify-content: flex-start; 697 | align-content: center; 698 | align-items: flex-start; 699 | } 700 | .flex-col-nowrap-start-center-center { 701 | display: flex; 702 | flex-direction: column; 703 | flex-wrap: nowrap; 704 | justify-content: flex-start; 705 | align-content: center; 706 | align-items: center; 707 | } 708 | .flex-col-nowrap-start-center-end { 709 | display: flex; 710 | flex-direction: column; 711 | flex-wrap: nowrap; 712 | justify-content: flex-start; 713 | align-content: center; 714 | align-items: flex-end; 715 | } 716 | .flex-col-nowrap-start-end-start { 717 | display: flex; 718 | flex-direction: column; 719 | flex-wrap: nowrap; 720 | justify-content: flex-start; 721 | align-content: flex-end; 722 | align-items: flex-start; 723 | } 724 | .flex-col-nowrap-start-end-center { 725 | display: flex; 726 | flex-direction: column; 727 | flex-wrap: nowrap; 728 | justify-content: flex-start; 729 | align-content: flex-end; 730 | align-items: center; 731 | } 732 | .flex-col-nowrap-start-end-end { 733 | display: flex; 734 | flex-direction: column; 735 | flex-wrap: nowrap; 736 | justify-content: flex-start; 737 | align-content: flex-end; 738 | align-items: flex-end; 739 | } 740 | .flex-col-nowrap-center-start-start { 741 | display: flex; 742 | flex-direction: column; 743 | flex-wrap: nowrap; 744 | justify-content: center; 745 | align-content: flex-start; 746 | align-items: flex-start; 747 | } 748 | .flex-col-nowrap-center-start-center { 749 | display: flex; 750 | flex-direction: column; 751 | flex-wrap: nowrap; 752 | justify-content: center; 753 | align-content: flex-start; 754 | align-items: center; 755 | } 756 | .flex-col-nowrap-center-start-end { 757 | display: flex; 758 | flex-direction: column; 759 | flex-wrap: nowrap; 760 | justify-content: center; 761 | align-content: flex-start; 762 | align-items: flex-end; 763 | } 764 | .flex-col-nowrap-center-center-start { 765 | display: flex; 766 | flex-direction: column; 767 | flex-wrap: nowrap; 768 | justify-content: center; 769 | align-content: center; 770 | align-items: flex-start; 771 | } 772 | .flex-col-nowrap-center-center-center { 773 | display: flex; 774 | flex-direction: column; 775 | flex-wrap: nowrap; 776 | justify-content: center; 777 | align-content: center; 778 | align-items: center; 779 | } 780 | .flex-col-nowrap-center-center-end { 781 | display: flex; 782 | flex-direction: column; 783 | flex-wrap: nowrap; 784 | justify-content: center; 785 | align-content: center; 786 | align-items: flex-end; 787 | } 788 | .flex-col-nowrap-center-end-start { 789 | display: flex; 790 | flex-direction: column; 791 | flex-wrap: nowrap; 792 | justify-content: center; 793 | align-content: flex-end; 794 | align-items: flex-start; 795 | } 796 | .flex-col-nowrap-center-end-center { 797 | display: flex; 798 | flex-direction: column; 799 | flex-wrap: nowrap; 800 | justify-content: center; 801 | align-content: flex-end; 802 | align-items: center; 803 | } 804 | .flex-col-nowrap-center-end-end { 805 | display: flex; 806 | flex-direction: column; 807 | flex-wrap: nowrap; 808 | justify-content: center; 809 | align-content: flex-end; 810 | align-items: flex-end; 811 | } 812 | .flex-col-nowrap-end-start-start { 813 | display: flex; 814 | flex-direction: column; 815 | flex-wrap: nowrap; 816 | justify-content: flex-end; 817 | align-content: flex-start; 818 | align-items: flex-start; 819 | } 820 | .flex-col-nowrap-end-start-center { 821 | display: flex; 822 | flex-direction: column; 823 | flex-wrap: nowrap; 824 | justify-content: flex-end; 825 | align-content: flex-start; 826 | align-items: center; 827 | } 828 | .flex-col-nowrap-end-start-end { 829 | display: flex; 830 | flex-direction: column; 831 | flex-wrap: nowrap; 832 | justify-content: flex-end; 833 | align-content: flex-start; 834 | align-items: flex-end; 835 | } 836 | .flex-col-nowrap-end-center-start { 837 | display: flex; 838 | flex-direction: column; 839 | flex-wrap: nowrap; 840 | justify-content: flex-end; 841 | align-content: center; 842 | align-items: flex-start; 843 | } 844 | .flex-col-nowrap-end-center-center { 845 | display: flex; 846 | flex-direction: column; 847 | flex-wrap: nowrap; 848 | justify-content: flex-end; 849 | align-content: center; 850 | align-items: center; 851 | } 852 | .flex-col-nowrap-end-center-end { 853 | display: flex; 854 | flex-direction: column; 855 | flex-wrap: nowrap; 856 | justify-content: flex-end; 857 | align-content: center; 858 | align-items: flex-end; 859 | } 860 | .flex-col-nowrap-end-end-start { 861 | display: flex; 862 | flex-direction: column; 863 | flex-wrap: nowrap; 864 | justify-content: flex-end; 865 | align-content: flex-end; 866 | align-items: flex-start; 867 | } 868 | .flex-col-nowrap-end-end-center { 869 | display: flex; 870 | flex-direction: column; 871 | flex-wrap: nowrap; 872 | justify-content: flex-end; 873 | align-content: flex-end; 874 | align-items: center; 875 | } 876 | .flex-col-nowrap-end-end-end { 877 | display: flex; 878 | flex-direction: column; 879 | flex-wrap: nowrap; 880 | justify-content: flex-end; 881 | align-content: flex-end; 882 | align-items: flex-end; 883 | } 884 | .flex-row-nowrap-sa-start-start { 885 | display: flex; 886 | flex-direction: row; 887 | flex-wrap: nowrap; 888 | justify-content: space-around; 889 | align-content: flex-start; 890 | align-items: flex-start; 891 | } 892 | .flex-row-nowrap-sa-start-center { 893 | display: flex; 894 | flex-direction: row; 895 | flex-wrap: nowrap; 896 | justify-content: space-around; 897 | align-content: flex-start; 898 | align-items: center; 899 | } 900 | .flex-row-nowrap-sa-start-end { 901 | display: flex; 902 | flex-direction: row; 903 | flex-wrap: nowrap; 904 | justify-content: space-around; 905 | align-content: flex-start; 906 | align-items: flex-end; 907 | } 908 | .flex-row-nowrap-sa-center-start { 909 | display: flex; 910 | flex-direction: row; 911 | flex-wrap: nowrap; 912 | justify-content: space-around; 913 | align-content: center; 914 | align-items: flex-start; 915 | } 916 | .flex-row-nowrap-sa-center-center { 917 | display: flex; 918 | flex-direction: row; 919 | flex-wrap: nowrap; 920 | justify-content: space-around; 921 | align-content: center; 922 | align-items: center; 923 | } 924 | .flex-row-nowrap-sa-center-end { 925 | display: flex; 926 | flex-direction: row; 927 | flex-wrap: nowrap; 928 | justify-content: space-around; 929 | align-content: center; 930 | align-items: flex-end; 931 | } 932 | .flex-row-nowrap-sa-end-start { 933 | display: flex; 934 | flex-direction: row; 935 | flex-wrap: nowrap; 936 | justify-content: space-around; 937 | align-content: flex-end; 938 | align-items: flex-start; 939 | } 940 | .flex-row-nowrap-sa-end-center { 941 | display: flex; 942 | flex-direction: row; 943 | flex-wrap: nowrap; 944 | justify-content: space-around; 945 | align-content: flex-end; 946 | align-items: center; 947 | } 948 | .flex-row-nowrap-sa-end-end { 949 | display: flex; 950 | flex-direction: row; 951 | flex-wrap: nowrap; 952 | justify-content: space-around; 953 | align-content: flex-end; 954 | align-items: flex-end; 955 | } 956 | .flex-row-nowrap-sa-start-start { 957 | display: flex; 958 | flex-direction: row; 959 | flex-wrap: nowrap; 960 | justify-content: space-around; 961 | align-content: flex-start; 962 | align-items: flex-start; 963 | } 964 | .flex-row-nowrap-sa-start-center { 965 | display: flex; 966 | flex-direction: row; 967 | flex-wrap: nowrap; 968 | justify-content: space-around; 969 | align-content: flex-start; 970 | align-items: center; 971 | } 972 | .flex-row-nowrap-sa-start-end { 973 | display: flex; 974 | flex-direction: row; 975 | flex-wrap: nowrap; 976 | justify-content: space-around; 977 | align-content: flex-start; 978 | align-items: flex-end; 979 | } 980 | .flex-row-nowrap-sa-center-start { 981 | display: flex; 982 | flex-direction: row; 983 | flex-wrap: nowrap; 984 | justify-content: space-around; 985 | align-content: center; 986 | align-items: flex-start; 987 | } 988 | .flex-row-nowrap-sa-center-center { 989 | display: flex; 990 | flex-direction: row; 991 | flex-wrap: nowrap; 992 | justify-content: space-around; 993 | align-content: center; 994 | align-items: center; 995 | } 996 | .flex-row-nowrap-sa-center-end { 997 | display: flex; 998 | flex-direction: row; 999 | flex-wrap: nowrap; 1000 | justify-content: space-around; 1001 | align-content: center; 1002 | align-items: flex-end; 1003 | } 1004 | .flex-row-nowrap-sa-end-start { 1005 | display: flex; 1006 | flex-direction: row; 1007 | flex-wrap: nowrap; 1008 | justify-content: space-around; 1009 | align-content: flex-end; 1010 | align-items: flex-start; 1011 | } 1012 | .flex-row-nowrap-sa-end-center { 1013 | display: flex; 1014 | flex-direction: row; 1015 | flex-wrap: nowrap; 1016 | justify-content: space-around; 1017 | align-content: flex-end; 1018 | align-items: center; 1019 | } 1020 | .flex-row-nowrap-sa-end-end { 1021 | display: flex; 1022 | flex-direction: row; 1023 | flex-wrap: nowrap; 1024 | justify-content: space-around; 1025 | align-content: flex-end; 1026 | align-items: flex-end; 1027 | } 1028 | .flex-row-nowrap-sa-start-start { 1029 | display: flex; 1030 | flex-direction: row; 1031 | flex-wrap: nowrap; 1032 | justify-content: space-around; 1033 | align-content: flex-start; 1034 | align-items: flex-start; 1035 | } 1036 | .flex-row-nowrap-sa-start-center { 1037 | display: flex; 1038 | flex-direction: row; 1039 | flex-wrap: nowrap; 1040 | justify-content: space-around; 1041 | align-content: flex-start; 1042 | align-items: center; 1043 | } 1044 | .flex-row-nowrap-sa-start-end { 1045 | display: flex; 1046 | flex-direction: row; 1047 | flex-wrap: nowrap; 1048 | justify-content: space-around; 1049 | align-content: flex-start; 1050 | align-items: flex-end; 1051 | } 1052 | .flex-row-nowrap-sa-center-start { 1053 | display: flex; 1054 | flex-direction: row; 1055 | flex-wrap: nowrap; 1056 | justify-content: space-around; 1057 | align-content: center; 1058 | align-items: flex-start; 1059 | } 1060 | .flex-row-nowrap-sa-center-center { 1061 | display: flex; 1062 | flex-direction: row; 1063 | flex-wrap: nowrap; 1064 | justify-content: space-around; 1065 | align-content: center; 1066 | align-items: center; 1067 | } 1068 | .flex-row-nowrap-sa-center-end { 1069 | display: flex; 1070 | flex-direction: row; 1071 | flex-wrap: nowrap; 1072 | justify-content: space-around; 1073 | align-content: center; 1074 | align-items: flex-end; 1075 | } 1076 | .flex-row-nowrap-sa-end-start { 1077 | display: flex; 1078 | flex-direction: row; 1079 | flex-wrap: nowrap; 1080 | justify-content: space-around; 1081 | align-content: flex-end; 1082 | align-items: flex-start; 1083 | } 1084 | .flex-row-nowrap-sa-end-center { 1085 | display: flex; 1086 | flex-direction: row; 1087 | flex-wrap: nowrap; 1088 | justify-content: space-around; 1089 | align-content: flex-end; 1090 | align-items: center; 1091 | } 1092 | .flex-row-nowrap-sa-end-end { 1093 | display: flex; 1094 | flex-direction: row; 1095 | flex-wrap: nowrap; 1096 | justify-content: space-around; 1097 | align-content: flex-end; 1098 | align-items: flex-end; 1099 | } 1100 | .flex-row-wrap-sa-start-start { 1101 | display: flex; 1102 | flex-direction: row; 1103 | flex-wrap: wrap; 1104 | justify-content: space-around; 1105 | align-content: flex-start; 1106 | align-items: flex-start; 1107 | } 1108 | .flex-row-wrap-sa-start-center { 1109 | display: flex; 1110 | flex-direction: row; 1111 | flex-wrap: wrap; 1112 | justify-content: space-around; 1113 | align-content: flex-start; 1114 | align-items: center; 1115 | } 1116 | .flex-row-wrap-sa-start-end { 1117 | display: flex; 1118 | flex-direction: row; 1119 | flex-wrap: wrap; 1120 | justify-content: space-around; 1121 | align-content: flex-start; 1122 | align-items: flex-end; 1123 | } 1124 | .flex-row-wrap-sa-center-start { 1125 | display: flex; 1126 | flex-direction: row; 1127 | flex-wrap: wrap; 1128 | justify-content: space-around; 1129 | align-content: center; 1130 | align-items: flex-start; 1131 | } 1132 | .flex-row-wrap-sa-center-center { 1133 | display: flex; 1134 | flex-direction: row; 1135 | flex-wrap: wrap; 1136 | justify-content: space-around; 1137 | align-content: center; 1138 | align-items: center; 1139 | } 1140 | .flex-row-wrap-sa-center-end { 1141 | display: flex; 1142 | flex-direction: row; 1143 | flex-wrap: wrap; 1144 | justify-content: space-around; 1145 | align-content: center; 1146 | align-items: flex-end; 1147 | } 1148 | .flex-row-wrap-sa-end-start { 1149 | display: flex; 1150 | flex-direction: row; 1151 | flex-wrap: wrap; 1152 | justify-content: space-around; 1153 | align-content: flex-end; 1154 | align-items: flex-start; 1155 | } 1156 | .flex-row-wrap-sa-end-center { 1157 | display: flex; 1158 | flex-direction: row; 1159 | flex-wrap: wrap; 1160 | justify-content: space-around; 1161 | align-content: flex-end; 1162 | align-items: center; 1163 | } 1164 | .flex-row-wrap-sa-end-end { 1165 | display: flex; 1166 | flex-direction: row; 1167 | flex-wrap: wrap; 1168 | justify-content: space-around; 1169 | align-content: flex-end; 1170 | align-items: flex-end; 1171 | } 1172 | .flex-row-wrap-sa-start-start { 1173 | display: flex; 1174 | flex-direction: row; 1175 | flex-wrap: wrap; 1176 | justify-content: space-around; 1177 | align-content: flex-start; 1178 | align-items: flex-start; 1179 | } 1180 | .flex-row-wrap-sa-start-center { 1181 | display: flex; 1182 | flex-direction: row; 1183 | flex-wrap: wrap; 1184 | justify-content: space-around; 1185 | align-content: flex-start; 1186 | align-items: center; 1187 | } 1188 | .flex-row-wrap-sa-start-end { 1189 | display: flex; 1190 | flex-direction: row; 1191 | flex-wrap: wrap; 1192 | justify-content: space-around; 1193 | align-content: flex-start; 1194 | align-items: flex-end; 1195 | } 1196 | .flex-row-wrap-sa-center-start { 1197 | display: flex; 1198 | flex-direction: row; 1199 | flex-wrap: wrap; 1200 | justify-content: space-around; 1201 | align-content: center; 1202 | align-items: flex-start; 1203 | } 1204 | .flex-row-wrap-sa-center-center { 1205 | display: flex; 1206 | flex-direction: row; 1207 | flex-wrap: wrap; 1208 | justify-content: space-around; 1209 | align-content: center; 1210 | align-items: center; 1211 | } 1212 | .flex-row-wrap-sa-center-end { 1213 | display: flex; 1214 | flex-direction: row; 1215 | flex-wrap: wrap; 1216 | justify-content: space-around; 1217 | align-content: center; 1218 | align-items: flex-end; 1219 | } 1220 | .flex-row-wrap-sa-end-start { 1221 | display: flex; 1222 | flex-direction: row; 1223 | flex-wrap: wrap; 1224 | justify-content: space-around; 1225 | align-content: flex-end; 1226 | align-items: flex-start; 1227 | } 1228 | .flex-row-wrap-sa-end-center { 1229 | display: flex; 1230 | flex-direction: row; 1231 | flex-wrap: wrap; 1232 | justify-content: space-around; 1233 | align-content: flex-end; 1234 | align-items: center; 1235 | } 1236 | .flex-row-wrap-sa-end-end { 1237 | display: flex; 1238 | flex-direction: row; 1239 | flex-wrap: wrap; 1240 | justify-content: space-around; 1241 | align-content: flex-end; 1242 | align-items: flex-end; 1243 | } 1244 | .flex-row-wrap-sa-start-start { 1245 | display: flex; 1246 | flex-direction: row; 1247 | flex-wrap: wrap; 1248 | justify-content: space-around; 1249 | align-content: flex-start; 1250 | align-items: flex-start; 1251 | } 1252 | .flex-row-wrap-sa-start-center { 1253 | display: flex; 1254 | flex-direction: row; 1255 | flex-wrap: wrap; 1256 | justify-content: space-around; 1257 | align-content: flex-start; 1258 | align-items: center; 1259 | } 1260 | .flex-row-wrap-sa-start-end { 1261 | display: flex; 1262 | flex-direction: row; 1263 | flex-wrap: wrap; 1264 | justify-content: space-around; 1265 | align-content: flex-start; 1266 | align-items: flex-end; 1267 | } 1268 | .flex-row-wrap-sa-center-start { 1269 | display: flex; 1270 | flex-direction: row; 1271 | flex-wrap: wrap; 1272 | justify-content: space-around; 1273 | align-content: center; 1274 | align-items: flex-start; 1275 | } 1276 | .flex-row-wrap-sa-center-center { 1277 | display: flex; 1278 | flex-direction: row; 1279 | flex-wrap: wrap; 1280 | justify-content: space-around; 1281 | align-content: center; 1282 | align-items: center; 1283 | } 1284 | .flex-row-wrap-sa-center-end { 1285 | display: flex; 1286 | flex-direction: row; 1287 | flex-wrap: wrap; 1288 | justify-content: space-around; 1289 | align-content: center; 1290 | align-items: flex-end; 1291 | } 1292 | .flex-row-wrap-sa-end-start { 1293 | display: flex; 1294 | flex-direction: row; 1295 | flex-wrap: wrap; 1296 | justify-content: space-around; 1297 | align-content: flex-end; 1298 | align-items: flex-start; 1299 | } 1300 | .flex-row-wrap-sa-end-center { 1301 | display: flex; 1302 | flex-direction: row; 1303 | flex-wrap: wrap; 1304 | justify-content: space-around; 1305 | align-content: flex-end; 1306 | align-items: center; 1307 | } 1308 | .flex-row-wrap-sa-end-end { 1309 | display: flex; 1310 | flex-direction: row; 1311 | flex-wrap: wrap; 1312 | justify-content: space-around; 1313 | align-content: flex-end; 1314 | align-items: flex-end; 1315 | } 1316 | 1317 | .flex-grow-height { 1318 | flex-grow: 1; 1319 | height: 0px; 1320 | } 1321 | 1322 | .flex-grow-width { 1323 | flex-grow: 1; 1324 | width: 0px; 1325 | } -------------------------------------------------------------------------------- /panel/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "panel", 3 | "version": "0.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "panel", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "axios": "^1.6.7", 12 | "copy-to-clipboard": "^3.3.3", 13 | "moment": "^2.30.1", 14 | "vue": "^3.3.11", 15 | "vue-router": "^4.2.5" 16 | }, 17 | "devDependencies": { 18 | "@vitejs/plugin-vue": "^4.5.2", 19 | "naive-ui": "^2.37.3", 20 | "typescript": "^5.2.2", 21 | "vite": "^5.0.8", 22 | "vue-tsc": "^1.8.25" 23 | } 24 | }, 25 | "node_modules/@babel/parser": { 26 | "version": "7.23.9", 27 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", 28 | "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", 29 | "bin": { 30 | "parser": "bin/babel-parser.js" 31 | }, 32 | "engines": { 33 | "node": ">=6.0.0" 34 | } 35 | }, 36 | "node_modules/@babel/runtime": { 37 | "version": "7.23.9", 38 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", 39 | "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", 40 | "dev": true, 41 | "dependencies": { 42 | "regenerator-runtime": "^0.14.0" 43 | }, 44 | "engines": { 45 | "node": ">=6.9.0" 46 | } 47 | }, 48 | "node_modules/@css-render/plugin-bem": { 49 | "version": "0.15.12", 50 | "resolved": "https://registry.npmjs.org/@css-render/plugin-bem/-/plugin-bem-0.15.12.tgz", 51 | "integrity": "sha512-Lq2jSOZn+wYQtsyaFj6QRz2EzAnd3iW5fZeHO1WSXQdVYwvwGX0ZiH3X2JQgtgYLT1yeGtrwrqJdNdMEUD2xTw==", 52 | "dev": true, 53 | "peerDependencies": { 54 | "css-render": "~0.15.12" 55 | } 56 | }, 57 | "node_modules/@css-render/vue3-ssr": { 58 | "version": "0.15.12", 59 | "resolved": "https://registry.npmjs.org/@css-render/vue3-ssr/-/vue3-ssr-0.15.12.tgz", 60 | "integrity": "sha512-AQLGhhaE0F+rwybRCkKUdzBdTEM/5PZBYy+fSYe1T9z9+yxMuV/k7ZRqa4M69X+EI1W8pa4kc9Iq2VjQkZx4rg==", 61 | "dev": true, 62 | "peerDependencies": { 63 | "vue": "^3.0.11" 64 | } 65 | }, 66 | "node_modules/@emotion/hash": { 67 | "version": "0.8.0", 68 | "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", 69 | "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", 70 | "dev": true 71 | }, 72 | "node_modules/@esbuild/aix-ppc64": { 73 | "version": "0.19.12", 74 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", 75 | "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", 76 | "cpu": [ 77 | "ppc64" 78 | ], 79 | "dev": true, 80 | "optional": true, 81 | "os": [ 82 | "aix" 83 | ], 84 | "engines": { 85 | "node": ">=12" 86 | } 87 | }, 88 | "node_modules/@esbuild/android-arm": { 89 | "version": "0.19.12", 90 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", 91 | "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", 92 | "cpu": [ 93 | "arm" 94 | ], 95 | "dev": true, 96 | "optional": true, 97 | "os": [ 98 | "android" 99 | ], 100 | "engines": { 101 | "node": ">=12" 102 | } 103 | }, 104 | "node_modules/@esbuild/android-arm64": { 105 | "version": "0.19.12", 106 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", 107 | "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", 108 | "cpu": [ 109 | "arm64" 110 | ], 111 | "dev": true, 112 | "optional": true, 113 | "os": [ 114 | "android" 115 | ], 116 | "engines": { 117 | "node": ">=12" 118 | } 119 | }, 120 | "node_modules/@esbuild/android-x64": { 121 | "version": "0.19.12", 122 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", 123 | "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", 124 | "cpu": [ 125 | "x64" 126 | ], 127 | "dev": true, 128 | "optional": true, 129 | "os": [ 130 | "android" 131 | ], 132 | "engines": { 133 | "node": ">=12" 134 | } 135 | }, 136 | "node_modules/@esbuild/darwin-arm64": { 137 | "version": "0.19.12", 138 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", 139 | "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", 140 | "cpu": [ 141 | "arm64" 142 | ], 143 | "dev": true, 144 | "optional": true, 145 | "os": [ 146 | "darwin" 147 | ], 148 | "engines": { 149 | "node": ">=12" 150 | } 151 | }, 152 | "node_modules/@esbuild/darwin-x64": { 153 | "version": "0.19.12", 154 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", 155 | "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", 156 | "cpu": [ 157 | "x64" 158 | ], 159 | "dev": true, 160 | "optional": true, 161 | "os": [ 162 | "darwin" 163 | ], 164 | "engines": { 165 | "node": ">=12" 166 | } 167 | }, 168 | "node_modules/@esbuild/freebsd-arm64": { 169 | "version": "0.19.12", 170 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", 171 | "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", 172 | "cpu": [ 173 | "arm64" 174 | ], 175 | "dev": true, 176 | "optional": true, 177 | "os": [ 178 | "freebsd" 179 | ], 180 | "engines": { 181 | "node": ">=12" 182 | } 183 | }, 184 | "node_modules/@esbuild/freebsd-x64": { 185 | "version": "0.19.12", 186 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", 187 | "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", 188 | "cpu": [ 189 | "x64" 190 | ], 191 | "dev": true, 192 | "optional": true, 193 | "os": [ 194 | "freebsd" 195 | ], 196 | "engines": { 197 | "node": ">=12" 198 | } 199 | }, 200 | "node_modules/@esbuild/linux-arm": { 201 | "version": "0.19.12", 202 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", 203 | "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", 204 | "cpu": [ 205 | "arm" 206 | ], 207 | "dev": true, 208 | "optional": true, 209 | "os": [ 210 | "linux" 211 | ], 212 | "engines": { 213 | "node": ">=12" 214 | } 215 | }, 216 | "node_modules/@esbuild/linux-arm64": { 217 | "version": "0.19.12", 218 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", 219 | "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", 220 | "cpu": [ 221 | "arm64" 222 | ], 223 | "dev": true, 224 | "optional": true, 225 | "os": [ 226 | "linux" 227 | ], 228 | "engines": { 229 | "node": ">=12" 230 | } 231 | }, 232 | "node_modules/@esbuild/linux-ia32": { 233 | "version": "0.19.12", 234 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", 235 | "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", 236 | "cpu": [ 237 | "ia32" 238 | ], 239 | "dev": true, 240 | "optional": true, 241 | "os": [ 242 | "linux" 243 | ], 244 | "engines": { 245 | "node": ">=12" 246 | } 247 | }, 248 | "node_modules/@esbuild/linux-loong64": { 249 | "version": "0.19.12", 250 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", 251 | "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", 252 | "cpu": [ 253 | "loong64" 254 | ], 255 | "dev": true, 256 | "optional": true, 257 | "os": [ 258 | "linux" 259 | ], 260 | "engines": { 261 | "node": ">=12" 262 | } 263 | }, 264 | "node_modules/@esbuild/linux-mips64el": { 265 | "version": "0.19.12", 266 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", 267 | "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", 268 | "cpu": [ 269 | "mips64el" 270 | ], 271 | "dev": true, 272 | "optional": true, 273 | "os": [ 274 | "linux" 275 | ], 276 | "engines": { 277 | "node": ">=12" 278 | } 279 | }, 280 | "node_modules/@esbuild/linux-ppc64": { 281 | "version": "0.19.12", 282 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", 283 | "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", 284 | "cpu": [ 285 | "ppc64" 286 | ], 287 | "dev": true, 288 | "optional": true, 289 | "os": [ 290 | "linux" 291 | ], 292 | "engines": { 293 | "node": ">=12" 294 | } 295 | }, 296 | "node_modules/@esbuild/linux-riscv64": { 297 | "version": "0.19.12", 298 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", 299 | "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", 300 | "cpu": [ 301 | "riscv64" 302 | ], 303 | "dev": true, 304 | "optional": true, 305 | "os": [ 306 | "linux" 307 | ], 308 | "engines": { 309 | "node": ">=12" 310 | } 311 | }, 312 | "node_modules/@esbuild/linux-s390x": { 313 | "version": "0.19.12", 314 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", 315 | "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", 316 | "cpu": [ 317 | "s390x" 318 | ], 319 | "dev": true, 320 | "optional": true, 321 | "os": [ 322 | "linux" 323 | ], 324 | "engines": { 325 | "node": ">=12" 326 | } 327 | }, 328 | "node_modules/@esbuild/linux-x64": { 329 | "version": "0.19.12", 330 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", 331 | "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", 332 | "cpu": [ 333 | "x64" 334 | ], 335 | "dev": true, 336 | "optional": true, 337 | "os": [ 338 | "linux" 339 | ], 340 | "engines": { 341 | "node": ">=12" 342 | } 343 | }, 344 | "node_modules/@esbuild/netbsd-x64": { 345 | "version": "0.19.12", 346 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", 347 | "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", 348 | "cpu": [ 349 | "x64" 350 | ], 351 | "dev": true, 352 | "optional": true, 353 | "os": [ 354 | "netbsd" 355 | ], 356 | "engines": { 357 | "node": ">=12" 358 | } 359 | }, 360 | "node_modules/@esbuild/openbsd-x64": { 361 | "version": "0.19.12", 362 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", 363 | "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", 364 | "cpu": [ 365 | "x64" 366 | ], 367 | "dev": true, 368 | "optional": true, 369 | "os": [ 370 | "openbsd" 371 | ], 372 | "engines": { 373 | "node": ">=12" 374 | } 375 | }, 376 | "node_modules/@esbuild/sunos-x64": { 377 | "version": "0.19.12", 378 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", 379 | "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", 380 | "cpu": [ 381 | "x64" 382 | ], 383 | "dev": true, 384 | "optional": true, 385 | "os": [ 386 | "sunos" 387 | ], 388 | "engines": { 389 | "node": ">=12" 390 | } 391 | }, 392 | "node_modules/@esbuild/win32-arm64": { 393 | "version": "0.19.12", 394 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", 395 | "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", 396 | "cpu": [ 397 | "arm64" 398 | ], 399 | "dev": true, 400 | "optional": true, 401 | "os": [ 402 | "win32" 403 | ], 404 | "engines": { 405 | "node": ">=12" 406 | } 407 | }, 408 | "node_modules/@esbuild/win32-ia32": { 409 | "version": "0.19.12", 410 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", 411 | "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", 412 | "cpu": [ 413 | "ia32" 414 | ], 415 | "dev": true, 416 | "optional": true, 417 | "os": [ 418 | "win32" 419 | ], 420 | "engines": { 421 | "node": ">=12" 422 | } 423 | }, 424 | "node_modules/@esbuild/win32-x64": { 425 | "version": "0.19.12", 426 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", 427 | "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", 428 | "cpu": [ 429 | "x64" 430 | ], 431 | "dev": true, 432 | "optional": true, 433 | "os": [ 434 | "win32" 435 | ], 436 | "engines": { 437 | "node": ">=12" 438 | } 439 | }, 440 | "node_modules/@jridgewell/sourcemap-codec": { 441 | "version": "1.4.15", 442 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 443 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" 444 | }, 445 | "node_modules/@juggle/resize-observer": { 446 | "version": "3.4.0", 447 | "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", 448 | "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==", 449 | "dev": true 450 | }, 451 | "node_modules/@rollup/rollup-android-arm-eabi": { 452 | "version": "4.9.6", 453 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", 454 | "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", 455 | "cpu": [ 456 | "arm" 457 | ], 458 | "dev": true, 459 | "optional": true, 460 | "os": [ 461 | "android" 462 | ] 463 | }, 464 | "node_modules/@rollup/rollup-android-arm64": { 465 | "version": "4.9.6", 466 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", 467 | "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", 468 | "cpu": [ 469 | "arm64" 470 | ], 471 | "dev": true, 472 | "optional": true, 473 | "os": [ 474 | "android" 475 | ] 476 | }, 477 | "node_modules/@rollup/rollup-darwin-arm64": { 478 | "version": "4.9.6", 479 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", 480 | "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", 481 | "cpu": [ 482 | "arm64" 483 | ], 484 | "dev": true, 485 | "optional": true, 486 | "os": [ 487 | "darwin" 488 | ] 489 | }, 490 | "node_modules/@rollup/rollup-darwin-x64": { 491 | "version": "4.9.6", 492 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", 493 | "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", 494 | "cpu": [ 495 | "x64" 496 | ], 497 | "dev": true, 498 | "optional": true, 499 | "os": [ 500 | "darwin" 501 | ] 502 | }, 503 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 504 | "version": "4.9.6", 505 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", 506 | "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", 507 | "cpu": [ 508 | "arm" 509 | ], 510 | "dev": true, 511 | "optional": true, 512 | "os": [ 513 | "linux" 514 | ] 515 | }, 516 | "node_modules/@rollup/rollup-linux-arm64-gnu": { 517 | "version": "4.9.6", 518 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", 519 | "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", 520 | "cpu": [ 521 | "arm64" 522 | ], 523 | "dev": true, 524 | "optional": true, 525 | "os": [ 526 | "linux" 527 | ] 528 | }, 529 | "node_modules/@rollup/rollup-linux-arm64-musl": { 530 | "version": "4.9.6", 531 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", 532 | "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", 533 | "cpu": [ 534 | "arm64" 535 | ], 536 | "dev": true, 537 | "optional": true, 538 | "os": [ 539 | "linux" 540 | ] 541 | }, 542 | "node_modules/@rollup/rollup-linux-riscv64-gnu": { 543 | "version": "4.9.6", 544 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", 545 | "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", 546 | "cpu": [ 547 | "riscv64" 548 | ], 549 | "dev": true, 550 | "optional": true, 551 | "os": [ 552 | "linux" 553 | ] 554 | }, 555 | "node_modules/@rollup/rollup-linux-x64-gnu": { 556 | "version": "4.9.6", 557 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", 558 | "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", 559 | "cpu": [ 560 | "x64" 561 | ], 562 | "dev": true, 563 | "optional": true, 564 | "os": [ 565 | "linux" 566 | ] 567 | }, 568 | "node_modules/@rollup/rollup-linux-x64-musl": { 569 | "version": "4.9.6", 570 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", 571 | "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", 572 | "cpu": [ 573 | "x64" 574 | ], 575 | "dev": true, 576 | "optional": true, 577 | "os": [ 578 | "linux" 579 | ] 580 | }, 581 | "node_modules/@rollup/rollup-win32-arm64-msvc": { 582 | "version": "4.9.6", 583 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", 584 | "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", 585 | "cpu": [ 586 | "arm64" 587 | ], 588 | "dev": true, 589 | "optional": true, 590 | "os": [ 591 | "win32" 592 | ] 593 | }, 594 | "node_modules/@rollup/rollup-win32-ia32-msvc": { 595 | "version": "4.9.6", 596 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", 597 | "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", 598 | "cpu": [ 599 | "ia32" 600 | ], 601 | "dev": true, 602 | "optional": true, 603 | "os": [ 604 | "win32" 605 | ] 606 | }, 607 | "node_modules/@rollup/rollup-win32-x64-msvc": { 608 | "version": "4.9.6", 609 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", 610 | "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", 611 | "cpu": [ 612 | "x64" 613 | ], 614 | "dev": true, 615 | "optional": true, 616 | "os": [ 617 | "win32" 618 | ] 619 | }, 620 | "node_modules/@types/estree": { 621 | "version": "1.0.5", 622 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", 623 | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", 624 | "dev": true 625 | }, 626 | "node_modules/@types/katex": { 627 | "version": "0.16.7", 628 | "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz", 629 | "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==", 630 | "dev": true 631 | }, 632 | "node_modules/@types/lodash": { 633 | "version": "4.14.202", 634 | "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", 635 | "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==", 636 | "dev": true 637 | }, 638 | "node_modules/@types/lodash-es": { 639 | "version": "4.17.12", 640 | "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", 641 | "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", 642 | "dev": true, 643 | "dependencies": { 644 | "@types/lodash": "*" 645 | } 646 | }, 647 | "node_modules/@vitejs/plugin-vue": { 648 | "version": "4.6.2", 649 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz", 650 | "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==", 651 | "dev": true, 652 | "engines": { 653 | "node": "^14.18.0 || >=16.0.0" 654 | }, 655 | "peerDependencies": { 656 | "vite": "^4.0.0 || ^5.0.0", 657 | "vue": "^3.2.25" 658 | } 659 | }, 660 | "node_modules/@volar/language-core": { 661 | "version": "1.11.1", 662 | "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.11.1.tgz", 663 | "integrity": "sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==", 664 | "dev": true, 665 | "dependencies": { 666 | "@volar/source-map": "1.11.1" 667 | } 668 | }, 669 | "node_modules/@volar/source-map": { 670 | "version": "1.11.1", 671 | "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.11.1.tgz", 672 | "integrity": "sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==", 673 | "dev": true, 674 | "dependencies": { 675 | "muggle-string": "^0.3.1" 676 | } 677 | }, 678 | "node_modules/@volar/typescript": { 679 | "version": "1.11.1", 680 | "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.11.1.tgz", 681 | "integrity": "sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==", 682 | "dev": true, 683 | "dependencies": { 684 | "@volar/language-core": "1.11.1", 685 | "path-browserify": "^1.0.1" 686 | } 687 | }, 688 | "node_modules/@vue/compiler-core": { 689 | "version": "3.4.15", 690 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.15.tgz", 691 | "integrity": "sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==", 692 | "dependencies": { 693 | "@babel/parser": "^7.23.6", 694 | "@vue/shared": "3.4.15", 695 | "entities": "^4.5.0", 696 | "estree-walker": "^2.0.2", 697 | "source-map-js": "^1.0.2" 698 | } 699 | }, 700 | "node_modules/@vue/compiler-dom": { 701 | "version": "3.4.15", 702 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.15.tgz", 703 | "integrity": "sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==", 704 | "dependencies": { 705 | "@vue/compiler-core": "3.4.15", 706 | "@vue/shared": "3.4.15" 707 | } 708 | }, 709 | "node_modules/@vue/compiler-sfc": { 710 | "version": "3.4.15", 711 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.15.tgz", 712 | "integrity": "sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA==", 713 | "dependencies": { 714 | "@babel/parser": "^7.23.6", 715 | "@vue/compiler-core": "3.4.15", 716 | "@vue/compiler-dom": "3.4.15", 717 | "@vue/compiler-ssr": "3.4.15", 718 | "@vue/shared": "3.4.15", 719 | "estree-walker": "^2.0.2", 720 | "magic-string": "^0.30.5", 721 | "postcss": "^8.4.33", 722 | "source-map-js": "^1.0.2" 723 | } 724 | }, 725 | "node_modules/@vue/compiler-ssr": { 726 | "version": "3.4.15", 727 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.15.tgz", 728 | "integrity": "sha512-1jdeQyiGznr8gjFDadVmOJqZiLNSsMa5ZgqavkPZ8O2wjHv0tVuAEsw5hTdUoUW4232vpBbL/wJhzVW/JwY1Uw==", 729 | "dependencies": { 730 | "@vue/compiler-dom": "3.4.15", 731 | "@vue/shared": "3.4.15" 732 | } 733 | }, 734 | "node_modules/@vue/devtools-api": { 735 | "version": "6.5.1", 736 | "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", 737 | "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" 738 | }, 739 | "node_modules/@vue/language-core": { 740 | "version": "1.8.27", 741 | "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.27.tgz", 742 | "integrity": "sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==", 743 | "dev": true, 744 | "dependencies": { 745 | "@volar/language-core": "~1.11.1", 746 | "@volar/source-map": "~1.11.1", 747 | "@vue/compiler-dom": "^3.3.0", 748 | "@vue/shared": "^3.3.0", 749 | "computeds": "^0.0.1", 750 | "minimatch": "^9.0.3", 751 | "muggle-string": "^0.3.1", 752 | "path-browserify": "^1.0.1", 753 | "vue-template-compiler": "^2.7.14" 754 | }, 755 | "peerDependencies": { 756 | "typescript": "*" 757 | }, 758 | "peerDependenciesMeta": { 759 | "typescript": { 760 | "optional": true 761 | } 762 | } 763 | }, 764 | "node_modules/@vue/reactivity": { 765 | "version": "3.4.15", 766 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.15.tgz", 767 | "integrity": "sha512-55yJh2bsff20K5O84MxSvXKPHHt17I2EomHznvFiJCAZpJTNW8IuLj1xZWMLELRhBK3kkFV/1ErZGHJfah7i7w==", 768 | "dependencies": { 769 | "@vue/shared": "3.4.15" 770 | } 771 | }, 772 | "node_modules/@vue/runtime-core": { 773 | "version": "3.4.15", 774 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.15.tgz", 775 | "integrity": "sha512-6E3by5m6v1AkW0McCeAyhHTw+3y17YCOKG0U0HDKDscV4Hs0kgNT5G+GCHak16jKgcCDHpI9xe5NKb8sdLCLdw==", 776 | "dependencies": { 777 | "@vue/reactivity": "3.4.15", 778 | "@vue/shared": "3.4.15" 779 | } 780 | }, 781 | "node_modules/@vue/runtime-dom": { 782 | "version": "3.4.15", 783 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.15.tgz", 784 | "integrity": "sha512-EVW8D6vfFVq3V/yDKNPBFkZKGMFSvZrUQmx196o/v2tHKdwWdiZjYUBS+0Ez3+ohRyF8Njwy/6FH5gYJ75liUw==", 785 | "dependencies": { 786 | "@vue/runtime-core": "3.4.15", 787 | "@vue/shared": "3.4.15", 788 | "csstype": "^3.1.3" 789 | } 790 | }, 791 | "node_modules/@vue/server-renderer": { 792 | "version": "3.4.15", 793 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.15.tgz", 794 | "integrity": "sha512-3HYzaidu9cHjrT+qGUuDhFYvF/j643bHC6uUN9BgM11DVy+pM6ATsG6uPBLnkwOgs7BpJABReLmpL3ZPAsUaqw==", 795 | "dependencies": { 796 | "@vue/compiler-ssr": "3.4.15", 797 | "@vue/shared": "3.4.15" 798 | }, 799 | "peerDependencies": { 800 | "vue": "3.4.15" 801 | } 802 | }, 803 | "node_modules/@vue/shared": { 804 | "version": "3.4.15", 805 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.15.tgz", 806 | "integrity": "sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==" 807 | }, 808 | "node_modules/async-validator": { 809 | "version": "4.2.5", 810 | "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", 811 | "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==", 812 | "dev": true 813 | }, 814 | "node_modules/asynckit": { 815 | "version": "0.4.0", 816 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 817 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 818 | }, 819 | "node_modules/axios": { 820 | "version": "1.6.7", 821 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", 822 | "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", 823 | "dependencies": { 824 | "follow-redirects": "^1.15.4", 825 | "form-data": "^4.0.0", 826 | "proxy-from-env": "^1.1.0" 827 | } 828 | }, 829 | "node_modules/balanced-match": { 830 | "version": "1.0.2", 831 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 832 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 833 | "dev": true 834 | }, 835 | "node_modules/brace-expansion": { 836 | "version": "2.0.1", 837 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 838 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 839 | "dev": true, 840 | "dependencies": { 841 | "balanced-match": "^1.0.0" 842 | } 843 | }, 844 | "node_modules/combined-stream": { 845 | "version": "1.0.8", 846 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 847 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 848 | "dependencies": { 849 | "delayed-stream": "~1.0.0" 850 | }, 851 | "engines": { 852 | "node": ">= 0.8" 853 | } 854 | }, 855 | "node_modules/computeds": { 856 | "version": "0.0.1", 857 | "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", 858 | "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", 859 | "dev": true 860 | }, 861 | "node_modules/copy-to-clipboard": { 862 | "version": "3.3.3", 863 | "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", 864 | "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", 865 | "dependencies": { 866 | "toggle-selection": "^1.0.6" 867 | } 868 | }, 869 | "node_modules/css-render": { 870 | "version": "0.15.12", 871 | "resolved": "https://registry.npmjs.org/css-render/-/css-render-0.15.12.tgz", 872 | "integrity": "sha512-eWzS66patiGkTTik+ipO9qNGZ+uNuGyTmnz6/+EJIiFg8+3yZRpnMwgFo8YdXhQRsiePzehnusrxVvugNjXzbw==", 873 | "dev": true, 874 | "dependencies": { 875 | "@emotion/hash": "~0.8.0", 876 | "csstype": "~3.0.5" 877 | } 878 | }, 879 | "node_modules/css-render/node_modules/csstype": { 880 | "version": "3.0.11", 881 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", 882 | "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==", 883 | "dev": true 884 | }, 885 | "node_modules/csstype": { 886 | "version": "3.1.3", 887 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", 888 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" 889 | }, 890 | "node_modules/date-fns": { 891 | "version": "2.30.0", 892 | "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", 893 | "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", 894 | "dev": true, 895 | "dependencies": { 896 | "@babel/runtime": "^7.21.0" 897 | }, 898 | "engines": { 899 | "node": ">=0.11" 900 | }, 901 | "funding": { 902 | "type": "opencollective", 903 | "url": "https://opencollective.com/date-fns" 904 | } 905 | }, 906 | "node_modules/date-fns-tz": { 907 | "version": "2.0.0", 908 | "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-2.0.0.tgz", 909 | "integrity": "sha512-OAtcLdB9vxSXTWHdT8b398ARImVwQMyjfYGkKD2zaGpHseG2UPHbHjXELReErZFxWdSLph3c2zOaaTyHfOhERQ==", 910 | "dev": true, 911 | "peerDependencies": { 912 | "date-fns": ">=2.0.0" 913 | } 914 | }, 915 | "node_modules/de-indent": { 916 | "version": "1.0.2", 917 | "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", 918 | "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", 919 | "dev": true 920 | }, 921 | "node_modules/delayed-stream": { 922 | "version": "1.0.0", 923 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 924 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 925 | "engines": { 926 | "node": ">=0.4.0" 927 | } 928 | }, 929 | "node_modules/entities": { 930 | "version": "4.5.0", 931 | "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", 932 | "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", 933 | "engines": { 934 | "node": ">=0.12" 935 | }, 936 | "funding": { 937 | "url": "https://github.com/fb55/entities?sponsor=1" 938 | } 939 | }, 940 | "node_modules/esbuild": { 941 | "version": "0.19.12", 942 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", 943 | "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", 944 | "dev": true, 945 | "hasInstallScript": true, 946 | "bin": { 947 | "esbuild": "bin/esbuild" 948 | }, 949 | "engines": { 950 | "node": ">=12" 951 | }, 952 | "optionalDependencies": { 953 | "@esbuild/aix-ppc64": "0.19.12", 954 | "@esbuild/android-arm": "0.19.12", 955 | "@esbuild/android-arm64": "0.19.12", 956 | "@esbuild/android-x64": "0.19.12", 957 | "@esbuild/darwin-arm64": "0.19.12", 958 | "@esbuild/darwin-x64": "0.19.12", 959 | "@esbuild/freebsd-arm64": "0.19.12", 960 | "@esbuild/freebsd-x64": "0.19.12", 961 | "@esbuild/linux-arm": "0.19.12", 962 | "@esbuild/linux-arm64": "0.19.12", 963 | "@esbuild/linux-ia32": "0.19.12", 964 | "@esbuild/linux-loong64": "0.19.12", 965 | "@esbuild/linux-mips64el": "0.19.12", 966 | "@esbuild/linux-ppc64": "0.19.12", 967 | "@esbuild/linux-riscv64": "0.19.12", 968 | "@esbuild/linux-s390x": "0.19.12", 969 | "@esbuild/linux-x64": "0.19.12", 970 | "@esbuild/netbsd-x64": "0.19.12", 971 | "@esbuild/openbsd-x64": "0.19.12", 972 | "@esbuild/sunos-x64": "0.19.12", 973 | "@esbuild/win32-arm64": "0.19.12", 974 | "@esbuild/win32-ia32": "0.19.12", 975 | "@esbuild/win32-x64": "0.19.12" 976 | } 977 | }, 978 | "node_modules/estree-walker": { 979 | "version": "2.0.2", 980 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 981 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" 982 | }, 983 | "node_modules/evtd": { 984 | "version": "0.2.4", 985 | "resolved": "https://registry.npmjs.org/evtd/-/evtd-0.2.4.tgz", 986 | "integrity": "sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==", 987 | "dev": true 988 | }, 989 | "node_modules/follow-redirects": { 990 | "version": "1.15.5", 991 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", 992 | "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", 993 | "funding": [ 994 | { 995 | "type": "individual", 996 | "url": "https://github.com/sponsors/RubenVerborgh" 997 | } 998 | ], 999 | "engines": { 1000 | "node": ">=4.0" 1001 | }, 1002 | "peerDependenciesMeta": { 1003 | "debug": { 1004 | "optional": true 1005 | } 1006 | } 1007 | }, 1008 | "node_modules/form-data": { 1009 | "version": "4.0.0", 1010 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 1011 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 1012 | "dependencies": { 1013 | "asynckit": "^0.4.0", 1014 | "combined-stream": "^1.0.8", 1015 | "mime-types": "^2.1.12" 1016 | }, 1017 | "engines": { 1018 | "node": ">= 6" 1019 | } 1020 | }, 1021 | "node_modules/fsevents": { 1022 | "version": "2.3.3", 1023 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1024 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1025 | "dev": true, 1026 | "hasInstallScript": true, 1027 | "optional": true, 1028 | "os": [ 1029 | "darwin" 1030 | ], 1031 | "engines": { 1032 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1033 | } 1034 | }, 1035 | "node_modules/he": { 1036 | "version": "1.2.0", 1037 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1038 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1039 | "dev": true, 1040 | "bin": { 1041 | "he": "bin/he" 1042 | } 1043 | }, 1044 | "node_modules/highlight.js": { 1045 | "version": "11.9.0", 1046 | "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz", 1047 | "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==", 1048 | "dev": true, 1049 | "engines": { 1050 | "node": ">=12.0.0" 1051 | } 1052 | }, 1053 | "node_modules/lodash": { 1054 | "version": "4.17.21", 1055 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1056 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 1057 | "dev": true 1058 | }, 1059 | "node_modules/lodash-es": { 1060 | "version": "4.17.21", 1061 | "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", 1062 | "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", 1063 | "dev": true 1064 | }, 1065 | "node_modules/lru-cache": { 1066 | "version": "6.0.0", 1067 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1068 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1069 | "dev": true, 1070 | "dependencies": { 1071 | "yallist": "^4.0.0" 1072 | }, 1073 | "engines": { 1074 | "node": ">=10" 1075 | } 1076 | }, 1077 | "node_modules/magic-string": { 1078 | "version": "0.30.5", 1079 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", 1080 | "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", 1081 | "dependencies": { 1082 | "@jridgewell/sourcemap-codec": "^1.4.15" 1083 | }, 1084 | "engines": { 1085 | "node": ">=12" 1086 | } 1087 | }, 1088 | "node_modules/mime-db": { 1089 | "version": "1.52.0", 1090 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1091 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 1092 | "engines": { 1093 | "node": ">= 0.6" 1094 | } 1095 | }, 1096 | "node_modules/mime-types": { 1097 | "version": "2.1.35", 1098 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1099 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1100 | "dependencies": { 1101 | "mime-db": "1.52.0" 1102 | }, 1103 | "engines": { 1104 | "node": ">= 0.6" 1105 | } 1106 | }, 1107 | "node_modules/minimatch": { 1108 | "version": "9.0.3", 1109 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", 1110 | "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", 1111 | "dev": true, 1112 | "dependencies": { 1113 | "brace-expansion": "^2.0.1" 1114 | }, 1115 | "engines": { 1116 | "node": ">=16 || 14 >=14.17" 1117 | }, 1118 | "funding": { 1119 | "url": "https://github.com/sponsors/isaacs" 1120 | } 1121 | }, 1122 | "node_modules/moment": { 1123 | "version": "2.30.1", 1124 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", 1125 | "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", 1126 | "engines": { 1127 | "node": "*" 1128 | } 1129 | }, 1130 | "node_modules/muggle-string": { 1131 | "version": "0.3.1", 1132 | "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz", 1133 | "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==", 1134 | "dev": true 1135 | }, 1136 | "node_modules/naive-ui": { 1137 | "version": "2.37.3", 1138 | "resolved": "https://registry.npmjs.org/naive-ui/-/naive-ui-2.37.3.tgz", 1139 | "integrity": "sha512-aUkHFXVIluSi8Me+npbcsdv1NYhVMj5t9YaruoCESlqmfqspj+R2QHEVXkTtUI1kQwVrABMCtAGq/wountqjZA==", 1140 | "dev": true, 1141 | "dependencies": { 1142 | "@css-render/plugin-bem": "^0.15.12", 1143 | "@css-render/vue3-ssr": "^0.15.12", 1144 | "@types/katex": "^0.16.2", 1145 | "@types/lodash": "^4.14.198", 1146 | "@types/lodash-es": "^4.17.9", 1147 | "async-validator": "^4.2.5", 1148 | "css-render": "^0.15.12", 1149 | "csstype": "^3.1.3", 1150 | "date-fns": "^2.30.0", 1151 | "date-fns-tz": "^2.0.0", 1152 | "evtd": "^0.2.4", 1153 | "highlight.js": "^11.8.0", 1154 | "lodash": "^4.17.21", 1155 | "lodash-es": "^4.17.21", 1156 | "seemly": "^0.3.8", 1157 | "treemate": "^0.3.11", 1158 | "vdirs": "^0.1.8", 1159 | "vooks": "^0.2.12", 1160 | "vueuc": "^0.4.58" 1161 | }, 1162 | "peerDependencies": { 1163 | "vue": "^3.0.0" 1164 | } 1165 | }, 1166 | "node_modules/nanoid": { 1167 | "version": "3.3.7", 1168 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", 1169 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", 1170 | "funding": [ 1171 | { 1172 | "type": "github", 1173 | "url": "https://github.com/sponsors/ai" 1174 | } 1175 | ], 1176 | "bin": { 1177 | "nanoid": "bin/nanoid.cjs" 1178 | }, 1179 | "engines": { 1180 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1181 | } 1182 | }, 1183 | "node_modules/path-browserify": { 1184 | "version": "1.0.1", 1185 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", 1186 | "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", 1187 | "dev": true 1188 | }, 1189 | "node_modules/picocolors": { 1190 | "version": "1.0.0", 1191 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1192 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 1193 | }, 1194 | "node_modules/postcss": { 1195 | "version": "8.4.33", 1196 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", 1197 | "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", 1198 | "funding": [ 1199 | { 1200 | "type": "opencollective", 1201 | "url": "https://opencollective.com/postcss/" 1202 | }, 1203 | { 1204 | "type": "tidelift", 1205 | "url": "https://tidelift.com/funding/github/npm/postcss" 1206 | }, 1207 | { 1208 | "type": "github", 1209 | "url": "https://github.com/sponsors/ai" 1210 | } 1211 | ], 1212 | "dependencies": { 1213 | "nanoid": "^3.3.7", 1214 | "picocolors": "^1.0.0", 1215 | "source-map-js": "^1.0.2" 1216 | }, 1217 | "engines": { 1218 | "node": "^10 || ^12 || >=14" 1219 | } 1220 | }, 1221 | "node_modules/proxy-from-env": { 1222 | "version": "1.1.0", 1223 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 1224 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 1225 | }, 1226 | "node_modules/regenerator-runtime": { 1227 | "version": "0.14.1", 1228 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", 1229 | "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", 1230 | "dev": true 1231 | }, 1232 | "node_modules/rollup": { 1233 | "version": "4.9.6", 1234 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", 1235 | "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==", 1236 | "dev": true, 1237 | "dependencies": { 1238 | "@types/estree": "1.0.5" 1239 | }, 1240 | "bin": { 1241 | "rollup": "dist/bin/rollup" 1242 | }, 1243 | "engines": { 1244 | "node": ">=18.0.0", 1245 | "npm": ">=8.0.0" 1246 | }, 1247 | "optionalDependencies": { 1248 | "@rollup/rollup-android-arm-eabi": "4.9.6", 1249 | "@rollup/rollup-android-arm64": "4.9.6", 1250 | "@rollup/rollup-darwin-arm64": "4.9.6", 1251 | "@rollup/rollup-darwin-x64": "4.9.6", 1252 | "@rollup/rollup-linux-arm-gnueabihf": "4.9.6", 1253 | "@rollup/rollup-linux-arm64-gnu": "4.9.6", 1254 | "@rollup/rollup-linux-arm64-musl": "4.9.6", 1255 | "@rollup/rollup-linux-riscv64-gnu": "4.9.6", 1256 | "@rollup/rollup-linux-x64-gnu": "4.9.6", 1257 | "@rollup/rollup-linux-x64-musl": "4.9.6", 1258 | "@rollup/rollup-win32-arm64-msvc": "4.9.6", 1259 | "@rollup/rollup-win32-ia32-msvc": "4.9.6", 1260 | "@rollup/rollup-win32-x64-msvc": "4.9.6", 1261 | "fsevents": "~2.3.2" 1262 | } 1263 | }, 1264 | "node_modules/seemly": { 1265 | "version": "0.3.8", 1266 | "resolved": "https://registry.npmjs.org/seemly/-/seemly-0.3.8.tgz", 1267 | "integrity": "sha512-MW8Qs6vbzo0pHmDpFSYPna+lwpZ6Zk1ancbajw/7E8TKtHdV+1DfZZD+kKJEhG/cAoB/i+LiT+5msZOqj0DwRA==", 1268 | "dev": true 1269 | }, 1270 | "node_modules/semver": { 1271 | "version": "7.5.4", 1272 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", 1273 | "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", 1274 | "dev": true, 1275 | "dependencies": { 1276 | "lru-cache": "^6.0.0" 1277 | }, 1278 | "bin": { 1279 | "semver": "bin/semver.js" 1280 | }, 1281 | "engines": { 1282 | "node": ">=10" 1283 | } 1284 | }, 1285 | "node_modules/source-map-js": { 1286 | "version": "1.0.2", 1287 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 1288 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 1289 | "engines": { 1290 | "node": ">=0.10.0" 1291 | } 1292 | }, 1293 | "node_modules/toggle-selection": { 1294 | "version": "1.0.6", 1295 | "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", 1296 | "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" 1297 | }, 1298 | "node_modules/treemate": { 1299 | "version": "0.3.11", 1300 | "resolved": "https://registry.npmjs.org/treemate/-/treemate-0.3.11.tgz", 1301 | "integrity": "sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==", 1302 | "dev": true 1303 | }, 1304 | "node_modules/typescript": { 1305 | "version": "5.3.3", 1306 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", 1307 | "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", 1308 | "devOptional": true, 1309 | "bin": { 1310 | "tsc": "bin/tsc", 1311 | "tsserver": "bin/tsserver" 1312 | }, 1313 | "engines": { 1314 | "node": ">=14.17" 1315 | } 1316 | }, 1317 | "node_modules/vdirs": { 1318 | "version": "0.1.8", 1319 | "resolved": "https://registry.npmjs.org/vdirs/-/vdirs-0.1.8.tgz", 1320 | "integrity": "sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==", 1321 | "dev": true, 1322 | "dependencies": { 1323 | "evtd": "^0.2.2" 1324 | }, 1325 | "peerDependencies": { 1326 | "vue": "^3.0.11" 1327 | } 1328 | }, 1329 | "node_modules/vite": { 1330 | "version": "5.0.12", 1331 | "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz", 1332 | "integrity": "sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==", 1333 | "dev": true, 1334 | "dependencies": { 1335 | "esbuild": "^0.19.3", 1336 | "postcss": "^8.4.32", 1337 | "rollup": "^4.2.0" 1338 | }, 1339 | "bin": { 1340 | "vite": "bin/vite.js" 1341 | }, 1342 | "engines": { 1343 | "node": "^18.0.0 || >=20.0.0" 1344 | }, 1345 | "funding": { 1346 | "url": "https://github.com/vitejs/vite?sponsor=1" 1347 | }, 1348 | "optionalDependencies": { 1349 | "fsevents": "~2.3.3" 1350 | }, 1351 | "peerDependencies": { 1352 | "@types/node": "^18.0.0 || >=20.0.0", 1353 | "less": "*", 1354 | "lightningcss": "^1.21.0", 1355 | "sass": "*", 1356 | "stylus": "*", 1357 | "sugarss": "*", 1358 | "terser": "^5.4.0" 1359 | }, 1360 | "peerDependenciesMeta": { 1361 | "@types/node": { 1362 | "optional": true 1363 | }, 1364 | "less": { 1365 | "optional": true 1366 | }, 1367 | "lightningcss": { 1368 | "optional": true 1369 | }, 1370 | "sass": { 1371 | "optional": true 1372 | }, 1373 | "stylus": { 1374 | "optional": true 1375 | }, 1376 | "sugarss": { 1377 | "optional": true 1378 | }, 1379 | "terser": { 1380 | "optional": true 1381 | } 1382 | } 1383 | }, 1384 | "node_modules/vooks": { 1385 | "version": "0.2.12", 1386 | "resolved": "https://registry.npmjs.org/vooks/-/vooks-0.2.12.tgz", 1387 | "integrity": "sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==", 1388 | "dev": true, 1389 | "dependencies": { 1390 | "evtd": "^0.2.2" 1391 | }, 1392 | "peerDependencies": { 1393 | "vue": "^3.0.0" 1394 | } 1395 | }, 1396 | "node_modules/vue": { 1397 | "version": "3.4.15", 1398 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.15.tgz", 1399 | "integrity": "sha512-jC0GH4KkWLWJOEQjOpkqU1bQsBwf4R1rsFtw5GQJbjHVKWDzO6P0nWWBTmjp1xSemAioDFj1jdaK1qa3DnMQoQ==", 1400 | "dependencies": { 1401 | "@vue/compiler-dom": "3.4.15", 1402 | "@vue/compiler-sfc": "3.4.15", 1403 | "@vue/runtime-dom": "3.4.15", 1404 | "@vue/server-renderer": "3.4.15", 1405 | "@vue/shared": "3.4.15" 1406 | }, 1407 | "peerDependencies": { 1408 | "typescript": "*" 1409 | }, 1410 | "peerDependenciesMeta": { 1411 | "typescript": { 1412 | "optional": true 1413 | } 1414 | } 1415 | }, 1416 | "node_modules/vue-router": { 1417 | "version": "4.2.5", 1418 | "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz", 1419 | "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", 1420 | "dependencies": { 1421 | "@vue/devtools-api": "^6.5.0" 1422 | }, 1423 | "funding": { 1424 | "url": "https://github.com/sponsors/posva" 1425 | }, 1426 | "peerDependencies": { 1427 | "vue": "^3.2.0" 1428 | } 1429 | }, 1430 | "node_modules/vue-template-compiler": { 1431 | "version": "2.7.16", 1432 | "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", 1433 | "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", 1434 | "dev": true, 1435 | "dependencies": { 1436 | "de-indent": "^1.0.2", 1437 | "he": "^1.2.0" 1438 | } 1439 | }, 1440 | "node_modules/vue-tsc": { 1441 | "version": "1.8.27", 1442 | "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.27.tgz", 1443 | "integrity": "sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==", 1444 | "dev": true, 1445 | "dependencies": { 1446 | "@volar/typescript": "~1.11.1", 1447 | "@vue/language-core": "1.8.27", 1448 | "semver": "^7.5.4" 1449 | }, 1450 | "bin": { 1451 | "vue-tsc": "bin/vue-tsc.js" 1452 | }, 1453 | "peerDependencies": { 1454 | "typescript": "*" 1455 | } 1456 | }, 1457 | "node_modules/vueuc": { 1458 | "version": "0.4.58", 1459 | "resolved": "https://registry.npmjs.org/vueuc/-/vueuc-0.4.58.tgz", 1460 | "integrity": "sha512-Wnj/N8WbPRSxSt+9ji1jtDHPzda5h2OH/0sFBhvdxDRuyCZbjGg3/cKMaKqEoe+dErTexG2R+i6Q8S/Toq1MYg==", 1461 | "dev": true, 1462 | "dependencies": { 1463 | "@css-render/vue3-ssr": "^0.15.10", 1464 | "@juggle/resize-observer": "^3.3.1", 1465 | "css-render": "^0.15.10", 1466 | "evtd": "^0.2.4", 1467 | "seemly": "^0.3.6", 1468 | "vdirs": "^0.1.4", 1469 | "vooks": "^0.2.4" 1470 | }, 1471 | "peerDependencies": { 1472 | "vue": "^3.0.11" 1473 | } 1474 | }, 1475 | "node_modules/yallist": { 1476 | "version": "4.0.0", 1477 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1478 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 1479 | "dev": true 1480 | } 1481 | } 1482 | } 1483 | --------------------------------------------------------------------------------