├── .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 |
2 |
3 |
4 |
5 | 刷新
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
31 |
32 |
--------------------------------------------------------------------------------
/panel/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
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 |
10 | {{ msg }}
11 |
12 |
13 |
14 |
15 | Edit
16 | components/HelloWorld.vue to test HMR
17 |
18 |
19 |
20 |
21 | Check out
22 | create-vue, the official Vue + Vite starter
25 |
26 |
27 | Install
28 | Volar
29 | in your IDE for a better DX
30 |
31 | Click on the Vite and Vue logos to learn more
32 |
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 |
2 |
3 |
4 |
5 |
6 |
{{ stateText }}
7 |
8 |
9 |
10 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
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 |
--------------------------------------------------------------------------------