From fad0d50f3f4a2b483a95eeb8a1c1c071b669142f Mon Sep 17 00:00:00 2001 From: cosmo Date: Mon, 23 Oct 2023 12:18:50 +0800 Subject: [PATCH 01/36] Compiled main.go and pushed changes --- .gitignore | 3 ++- config_template.yml | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 config_template.yml diff --git a/.gitignore b/.gitignore index 29d385c9..52efd70d 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ idmap.ini # Go specific go.mod -go.sum \ No newline at end of file +go.sum +*.exe \ No newline at end of file diff --git a/config_template.yml b/config_template.yml new file mode 100644 index 00000000..cb73fcd4 --- /dev/null +++ b/config_template.yml @@ -0,0 +1,13 @@ +version: 1 +settings: + ws_address: "ws://:" # WebSocket服务的地址 + app_id: # 你的应用ID + token: "" # 你的应用令牌 + client_secret: "" # 你的客户端密钥 + text_intent: # 你希望监听的事件类型 + - "ATMessageEventHandler" # 频道at + - "DirectMessageHandler" + # - "GroupATMessageEventHandler" # 群at 测试频道机器人时候需要注释 + global_channel_to_group: false # 是否将频道转换成群 + global_private_to_channel: false # 是否将私聊转换成频道 + array: false \ No newline at end of file From fda2572e694126febd60def3e6bed89ec1c5ef0c Mon Sep 17 00:00:00 2001 From: cosmo Date: Mon, 23 Oct 2023 13:22:05 +0800 Subject: [PATCH 02/36] test --- readme.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index dcd37574..97f5fe50 100644 --- a/readme.md +++ b/readme.md @@ -43,10 +43,14 @@ _✨ 基于 [OneBot](https://github.com/howmanybots/onebot/blob/master/README.md ## 兼容性 -gensokyo兼容 [OneBot-v11](https://github.com/botuniverse/onebot-11) ,并在其基础上做了一些扩展,详情请看 gensokyo 的文档。 +gensokyo兼容 [OneBot-v11](https://github.com/botuniverse/onebot-11) ,并在其基础上做了一些扩展,详情请看 OneBot 的文档。 + 可将官方的websocket和api转换至onebotv11标准,和koishi,nonebot2,trss等项目的onebot适配器相连接使用. + 实现插件开发和用户开发者无需重新开发,复用过往生态的插件和使用体验. +目前还在开发中..... + ### 接口 - [ ] HTTP API From 34cfac146145e90e6713e9847d218f986bf0ebc3 Mon Sep 17 00:00:00 2001 From: cosmo Date: Tue, 24 Oct 2023 00:43:48 +0800 Subject: [PATCH 03/36] =?UTF-8?q?=E9=80=82=E9=85=8D=E4=BA=86=E9=A2=91?= =?UTF-8?q?=E9=81=93=E7=A7=81=E8=81=8A,=E7=94=A8bolt=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E5=8F=96=E4=BB=A3ini?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Processor/Processor.go | 292 +++++++++++++++++++++++++++++------ botgo/openapi/v2/openapi.go | 3 +- botgo/token/authtoken.go | 4 +- botgo/token/token.go | 2 +- callapi/callapi.go | 5 +- handlers/get_group_info.go | 3 +- handlers/send_group_msg.go | 82 +++++----- handlers/send_private_msg.go | 204 ++++++++++++++++++++++++ idmap/iniMapping.go | 68 -------- idmap/service.go | 49 +++++- main.go | 28 +++- readme.md | 2 +- 12 files changed, 573 insertions(+), 169 deletions(-) create mode 100644 handlers/send_private_msg.go delete mode 100644 idmap/iniMapping.go diff --git a/Processor/Processor.go b/Processor/Processor.go index 1d3d3f89..794a84c7 100644 --- a/Processor/Processor.go +++ b/Processor/Processor.go @@ -2,7 +2,6 @@ package Processor import ( - "context" "encoding/json" "fmt" "log" @@ -21,16 +20,8 @@ import ( "github.com/tencent-connect/botgo/websocket/client" ) -var compatibilityMapping *idmap.IniMapping var err error -func init() { - compatibilityMapping, err = idmap.NewIniMapping() - if err != nil { - log.Fatalf("Failed to initialize IniMapping: %v", err) - } -} - // Processor 结构体用于处理消息 type Processor struct { Api openapi.OpenAPI // API 类型 @@ -45,6 +36,7 @@ type Sender struct { UserID int64 `json:"user_id"` } +// 频道信息事件 type OnebotChannelMessage struct { ChannelID string `json:"channel_id"` GuildID string `json:"guild_id"` @@ -63,7 +55,7 @@ type OnebotChannelMessage struct { Echo string `json:"echo"` } -// OnebotGroupMessage represents the message structure for group messages. +// 群信息事件 type OnebotGroupMessage struct { RawMessage string `json:"raw_message"` MessageID int `json:"message_id"` @@ -82,6 +74,29 @@ type OnebotGroupMessage struct { UserID int64 `json:"user_id"` } +// 私聊信息事件 +type OnebotPrivateMessage struct { + RawMessage string `json:"raw_message"` + MessageID int `json:"message_id"` // Can be either string or int depending on logic + MessageType string `json:"message_type"` + PostType string `json:"post_type"` + SelfID int64 `json:"self_id"` // Can be either string or int depending on logic + Sender PrivateSender `json:"sender"` + SubType string `json:"sub_type"` + Time int64 `json:"time"` + Avatar string `json:"avatar"` + Echo string `json:"echo"` + Message interface{} `json:"message"` // For array format + MessageSeq int `json:"message_seq,omitempty"` // Optional field + Font int `json:"font,omitempty"` // Optional field + UserID int64 `json:"user_id"` // Can be either string or int depending on logic +} + +type PrivateSender struct { + Nickname string `json:"nickname"` + UserID int64 `json:"user_id"` // Can be either string or int depending on logic +} + func FoxTimestamp() int64 { return time.Now().Unix() } @@ -157,9 +172,11 @@ func (p *Processor) ProcessGuildATMessage(data *dto.WSATMessageData) error { } else { // GlobalChannelToGroup为true时的处理逻辑 + //将频道转化为一个群 //获取s s := client.GetGlobalS() - compatibilityMapping.WriteConfig(data.ChannelID, "guild_id", data.GuildID) + //将channelid写入ini,可取出guild_id todo 比ini更好的储存方式 + idmap.WriteConfig(data.ChannelID, "guild_id", data.GuildID) //转换at messageText := handlers.RevertTransformedText(data.Content) //转换appid @@ -247,7 +264,7 @@ func (p *Processor) ProcessGroupMessage(data *dto.WSGroupATMessageData) error { // 获取s s := client.GetGlobalS() - compatibilityMapping.WriteConfig(data.ChannelID, "guild_id", data.GuildID) + idmap.WriteConfig(data.ChannelID, "guild_id", data.GuildID) // 转换at messageText := handlers.RevertTransformedText(data.Content) @@ -320,48 +337,231 @@ func (p *Processor) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) e // 打印data结构体 //PrintStructWithFieldNames(data) - // 从私信中提取必要的信息 + // 从私信中提取必要的信息 这是测试回复需要用到 //recipientID := data.Author.ID - ChannelID := data.ChannelID + //ChannelID := data.ChannelID //sourece是源头频道 - GuildID := data.GuildID - - // 创建私信通道 发主动私信才需要创建 - // dm, err := p.Api.CreateDirectMessage( - // context.Background(), &dto.DirectMessageToCreate{ - // SourceGuildID: sourceGuildID, - // RecipientID: recipientID, - // }, - // ) - // if err != nil { - // log.Println("Error creating direct message channel:", err) - // return nil - // } + //GuildID := data.GuildID - timestamp := time.Now().Unix() // 获取当前时间的int64类型的Unix时间戳 - timestampStr := fmt.Sprintf("%d", timestamp) + //获取当前的s值 当前ws连接所收到的信息条数 + s := client.GetGlobalS() + if !p.Settings.GlobalChannelToGroup { + // 把频道类型的私信转换成普通ob11的私信 - dm := &dto.DirectMessage{ - GuildID: GuildID, - ChannelID: ChannelID, - CreateTime: timestampStr, - } + //转换appidstring + AppIDString := strconv.FormatUint(p.Settings.AppID, 10) + echostr := AppIDString + "_" + strconv.FormatInt(s, 10) - PrintStructWithFieldNames(dm) + //将真实id转为int userid64 + userid64, err := idmap.StoreID(data.Author.ID) + if err != nil { + log.Fatalf("Error storing ID: %v", err) + } + //将真实id写入数据库,可取出ChannelID + idmap.WriteConfig(data.Author.ID, "channel_id", data.ChannelID) + //将channelid写入数据库,可取出guild_id + idmap.WriteConfig(data.ChannelID, "guild_id", data.GuildID) + + //收到私聊信息调用的具体还原步骤 + //1,idmap还原真实userid, + //2,通过idmap获取channelid, + //3,通过idmap用channelid获取guildid, + //发信息使用的是guildid + //todo 优化数据库读写次数 + messageID64, err := idmap.StoreID(data.ID) + if err != nil { + log.Fatalf("Error storing ID: %v", err) + } + messageID := int(messageID64) + + privateMsg := OnebotPrivateMessage{ + RawMessage: data.Content, + Message: data.Content, + MessageID: messageID, + MessageType: "private", + PostType: "message", + SelfID: int64(p.Settings.AppID), + UserID: userid64, + Sender: PrivateSender{ + Nickname: data.Member.Nick, + UserID: userid64, + }, + SubType: "friend", + Time: time.Now().Unix(), + Avatar: data.Author.Avatar, + Echo: echostr, + } + + // 将当前s和appid和message进行映射 + echo.AddMsgID(AppIDString, s, data.ID) + echo.AddMsgType(AppIDString, s, "guild_private") + + // 调试 + PrintStructWithFieldNames(privateMsg) + + // Convert OnebotGroupMessage to map and send + privateMsgMap := structToMap(privateMsg) + err = p.Wsclient.SendMessage(privateMsgMap) + if err != nil { + return fmt.Errorf("error sending group message via wsclient: %v", err) + } + } else { + if !p.Settings.GlobalChannelToGroup { + //将频道私信作为普通频道信息 + + // 将时间字符串转换为时间戳 + t, err := time.Parse(time.RFC3339, string(data.Timestamp)) + if err != nil { + return fmt.Errorf("error parsing time: %v", err) + } + //获取s + s := client.GetGlobalS() + //转换at + messageText := handlers.RevertTransformedText(data.Content) + //转换appid + AppIDString := strconv.FormatUint(p.Settings.AppID, 10) + //构造echo + echostr := AppIDString + "_" + strconv.FormatInt(s, 10) + //映射str的userid到int + userid64, err := idmap.StoreID(data.Author.ID) + if err != nil { + log.Printf("Error storing ID: %v", err) + return nil + } + //OnebotChannelMessage + onebotMsg := OnebotChannelMessage{ + ChannelID: data.ChannelID, + GuildID: data.GuildID, + Message: messageText, + RawMessage: messageText, + MessageID: data.ID, + MessageType: "guild", + PostType: "message", + SelfID: int64(p.Settings.AppID), + UserID: userid64, + SelfTinyID: "", + Sender: Sender{ + Nickname: data.Member.Nick, + TinyID: "", + UserID: userid64, + }, + SubType: "channel", + Time: t.Unix(), + Avatar: data.Author.Avatar, + Echo: echostr, + } + + //将当前s和appid和message进行映射 + echo.AddMsgID(AppIDString, s, data.ID) + //通过echo始终得知真实的事件类型,来对应调用正确的api + echo.AddMsgType(AppIDString, s, "guild_private") + + //调试 + PrintStructWithFieldNames(onebotMsg) + + // 将 onebotMsg 结构体转换为 map[string]interface{} + msgMap := structToMap(onebotMsg) + + // 使用 wsclient 发送消息 + err = p.Wsclient.SendMessage(msgMap) + if err != nil { + return fmt.Errorf("error sending message via wsclient: %v", err) + } + } else { + //将频道信息转化为群信息(特殊需求情况下) + //将channelid写入ini,可取出guild_id + idmap.WriteConfig(data.ChannelID, "guild_id", data.GuildID) + //转换at + messageText := handlers.RevertTransformedText(data.Content) + //转换appid + AppIDString := strconv.FormatUint(p.Settings.AppID, 10) + //构造echo + echostr := AppIDString + "_" + strconv.FormatInt(s, 10) + //把频道号作为群号 + channelIDInt, err := strconv.Atoi(data.ChannelID) + if err != nil { + // handle error, perhaps return it + return fmt.Errorf("failed to convert ChannelID to int: %v", err) + } + //映射str的userid到int + userid64, err := idmap.StoreID(data.Author.ID) + if err != nil { + log.Printf("Error storing ID: %v", err) + return nil + } + //userid := int(userid64) + //映射str的messageID到int + messageID64, err := idmap.StoreID(data.ID) + if err != nil { + log.Printf("Error storing ID: %v", err) + return nil + } + messageID := int(messageID64) + //todo 判断array模式 然后对Message处理成array格式 + groupMsg := OnebotGroupMessage{ + RawMessage: messageText, + Message: messageText, + MessageID: messageID, + GroupID: int64(channelIDInt), + MessageType: "group", + PostType: "message", + SelfID: int64(p.Settings.AppID), + UserID: userid64, + Sender: Sender{ + Nickname: data.Member.Nick, + UserID: userid64, + }, + SubType: "normal", + Time: time.Now().Unix(), + Avatar: data.Author.Avatar, + Echo: echostr, + } + //将当前s和appid和message进行映射 + echo.AddMsgID(AppIDString, s, data.ID) + echo.AddMsgType(AppIDString, s, "guild_private") + + //调试 + PrintStructWithFieldNames(groupMsg) + + // Convert OnebotGroupMessage to map and send + groupMsgMap := structToMap(groupMsg) + err = p.Wsclient.SendMessage(groupMsgMap) + if err != nil { + return fmt.Errorf("error sending group message via wsclient: %v", err) + } + } - // 发送默认回复 - toCreate := &dto.MessageToCreate{ - Content: "默认私信回复", - MsgID: data.ID, - } - _, err = p.Api.PostDirectMessage( - context.Background(), dm, toCreate, - ) - if err != nil { - log.Println("Error sending default reply:", err) - return nil } + //return nil + + //下面是测试时候固定代码 + //发私信给机器人4条机器人不回,就不能继续发了 + + // timestamp := time.Now().Unix() // 获取当前时间的int64类型的Unix时间戳 + // timestampStr := fmt.Sprintf("%d", timestamp) + + // dm := &dto.DirectMessage{ + // GuildID: GuildID, + // ChannelID: ChannelID, + // CreateTime: timestampStr, + // } + + // PrintStructWithFieldNames(dm) + + // // 发送默认回复 + // toCreate := &dto.MessageToCreate{ + // Content: "默认私信回复", + // MsgID: data.ID, + // } + // _, err = p.Api.PostDirectMessage( + // context.Background(), dm, toCreate, + // ) + // if err != nil { + // log.Println("Error sending default reply:", err) + // return nil + // } + return nil } diff --git a/botgo/openapi/v2/openapi.go b/botgo/openapi/v2/openapi.go index 2ace5872..419954ee 100644 --- a/botgo/openapi/v2/openapi.go +++ b/botgo/openapi/v2/openapi.go @@ -93,8 +93,7 @@ func (o *openAPIv2) setupClient() { func(c *resty.Client, r *resty.Request) error { // 设置授权方案为 "QQBot" c.SetAuthScheme("QQBot") - c.SetAuthToken("Sv0g5ZqFKn1E7iSBYxQzzWb7ky0X-W6P6QtGRJy1cgPm8bqGLMl73b9_72kyR9y1mBE-OvXsBMpA") - //c.SetAuthToken(o.token.GetAccessToken()) + c.SetAuthToken(o.token.GetAccessToken()) return nil }, ). diff --git a/botgo/token/authtoken.go b/botgo/token/authtoken.go index 62509b6e..b40695be 100644 --- a/botgo/token/authtoken.go +++ b/botgo/token/authtoken.go @@ -96,11 +96,11 @@ func (atoken *AuthTokenInfo) StartRefreshAccessToken(ctx context.Context, tokenU return } -//测试用 +// 测试用 // func (atoken *AuthTokenInfo) StartRefreshAccessToken(ctx context.Context, tokenURL, appID, clientSecrent string) (err error) { // // 创建一个固定的token信息 // fixedTokenInfo := AccessTokenInfo{ -// Token: "Sv0g5ZqFKn1E7iSBYxQzzWb7ky0X-W6P6QtGRJy1cgPm8bqGLMl73b9_72kyR9y1mBE-OvXsBMpA", +// Token: "SMvPWUBuXwSyAj1UmvTKVcK7D0iEaBrmbTKVNaJFMk9S5RmpgnGvNOOOTvrqG64NhuER-e-jK2IT", // ExpiresIn: 3600, // 这里假设token的有效时间是3600秒,你可以根据需要调整 // } // atoken.setAuthToken(fixedTokenInfo) diff --git a/botgo/token/token.go b/botgo/token/token.go index edcc3c92..2b0ad8f7 100644 --- a/botgo/token/token.go +++ b/botgo/token/token.go @@ -98,7 +98,7 @@ func (t *Token) GetAccessToken() string { // GetAccessToken 取得测试鉴权Token // func (t *Token) GetAccessToken() string { // // 固定的token值 -// return "Sv0g5ZqFKn1E7iSBYxQzzWb7ky0X-W6P6QtGRJy1cgPm8bqGLMl73b9_72kyR9y1mBE-OvXsBMpA" +// return "SMvPWUBuXwSyAj1UmvTKVcK7D0iEaBrmbTKVNaJFMk9S5RmpgnGvNOOOTvrqG64NhuER-e-jK2IT" // } // UpAccessToken 更新accessToken diff --git a/callapi/callapi.go b/callapi/callapi.go index 1b701050..4a64791c 100644 --- a/callapi/callapi.go +++ b/callapi/callapi.go @@ -20,8 +20,9 @@ type ParamsContent struct { BotQQ string `json:"botqq"` ChannelID string `json:"channel_id"` GuildID string `json:"guild_id"` - GroupID interface{} `json:"group_id"` - Message interface{} `json:"message"` // 这里使用interface{}因为它可能是多种类型 + GroupID interface{} `json:"group_id"` // 每一种onebotv11实现的字段类型都可能不同 + Message interface{} `json:"message"` // 这里使用interface{}因为它可能是多种类型 + UserID interface{} `json:"user_id"` // 这里使用interface{}因为它可能是多种类型 } // 自定义一个ParamsContent的UnmarshalJSON 让GroupID同时兼容str和int diff --git a/handlers/get_group_info.go b/handlers/get_group_info.go index e8c8baa2..ffa84266 100644 --- a/handlers/get_group_info.go +++ b/handlers/get_group_info.go @@ -7,6 +7,7 @@ import ( "strconv" "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/hoshinonyaruko/gensokyo/idmap" "github.com/tencent-connect/botgo/dto" "github.com/tencent-connect/botgo/openapi" @@ -57,7 +58,7 @@ func handleGetGroupInfo(client callapi.Client, api openapi.OpenAPI, apiv2 openap //用GroupID给ChannelID赋值,因为我们是把频道虚拟成了群 ChannelID := params.GroupID //读取ini 通过ChannelID取回之前储存的guild_id - value, err := compatibilityMapping.ReadConfig(ChannelID.(string), "guild_id") + value, err := idmap.ReadConfig(ChannelID.(string), "guild_id") if err != nil { log.Printf("handleGetGroupInfo:Error reading config: %v\n", err) return diff --git a/handlers/send_group_msg.go b/handlers/send_group_msg.go index ec77dda4..2df97b68 100644 --- a/handlers/send_group_msg.go +++ b/handlers/send_group_msg.go @@ -12,15 +12,8 @@ import ( "github.com/tencent-connect/botgo/openapi" ) -var compatibilityMapping *idmap.IniMapping -var err error - func init() { callapi.RegisterHandler("send_group_msg", handleSendGroupMsg) - compatibilityMapping, err = idmap.NewIniMapping() - if err != nil { - log.Fatalf("Failed to initialize IniMapping: %v", err) - } } func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { @@ -51,7 +44,15 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap // 优先发送文本信息 if messageText != "" { - groupMessage := generateGroupMessage(messageID, nil, messageText) + groupReply := generateGroupMessage(messageID, nil, messageText) + + // 进行类型断言 + groupMessage, ok := groupReply.(*dto.MessageToCreate) + if !ok { + log.Println("Error: Expected MessageToCreate type.") + return // 或其他错误处理 + } + groupMessage.Timestamp = time.Now().Unix() // 设置时间戳 _, err := apiv2.PostGroupMessage(context.TODO(), message.Params.GroupID.(string), groupMessage) if err != nil { @@ -65,8 +66,16 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap singleItem[key] = urls groupReply := generateGroupMessage(messageID, singleItem, "") - groupReply.Timestamp = time.Now().Unix() // 设置时间戳 - _, err := apiv2.PostGroupMessage(context.TODO(), message.Params.GroupID.(string), groupReply) + + // 进行类型断言 + richMediaMessage, ok := groupReply.(*dto.RichMediaMessage) + if !ok { + log.Printf("Error: Expected RichMediaMessage type for key %s.", key) + continue // 跳过这个项,继续下一个 + } + + //richMediaMessage.Timestamp = time.Now().Unix() // 设置时间戳 + _, err := apiv2.PostGroupMessage(context.TODO(), message.Params.GroupID.(string), richMediaMessage) if err != nil { log.Printf("发送 %s 信息失败: %v", key, err) } @@ -75,7 +84,7 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap //用GroupID给ChannelID赋值,因为我们是把频道虚拟成了群 message.Params.ChannelID = message.Params.GroupID.(string) //读取ini 通过ChannelID取回之前储存的guild_id - value, err := compatibilityMapping.ReadConfig(message.Params.ChannelID, "guild_id") + value, err := idmap.ReadConfig(message.Params.ChannelID, "guild_id") if err != nil { log.Printf("Error reading config: %v", err) return @@ -87,45 +96,34 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap } } -func generateGroupMessage(id string, foundItems map[string][]string, messageText string) *dto.MessageToCreate { - var reply dto.MessageToCreate - +func generateGroupMessage(id string, foundItems map[string][]string, messageText string) interface{} { if imageURLs, ok := foundItems["local_image"]; ok && len(imageURLs) > 0 { - // todo 完善本地文件上传 发送机制 - reply = dto.MessageToCreate{ - //EventID: id, // Use a placeholder event ID for now - Image: imageURLs[0], - MsgID: id, - MsgType: 0, // Assuming type 0 for images + // 本地发图逻辑 todo 适配base64图片 + return &dto.RichMediaMessage{ + EventID: id, + FileType: 1, // 1代表图片 + URL: imageURLs[0], + Content: "", // 这个字段文档没有了 + SrvSendMsg: true, } } else if imageURLs, ok := foundItems["url_image"]; ok && len(imageURLs) > 0 { - // Sending an external image - reply = dto.MessageToCreate{ - //EventID: id, // Use a placeholder event ID for now - Image: "http://" + imageURLs[0], // Using the same Image field for external URLs, adjust if needed - MsgID: id, - MsgType: 2, // Assuming type 0 for images + // 发链接图片 + return &dto.RichMediaMessage{ + EventID: id, + FileType: 1, // 1代表图片 + URL: "http://" + imageURLs[0], + Content: "", // 这个字段文档没有了 + SrvSendMsg: true, } } else if voiceURLs, ok := foundItems["base64_record"]; ok && len(voiceURLs) > 0 { - //还不支持发语音 - // Sending a voice message - // reply = dto.MessageToCreate{ - // EventID: id, - // Embed: &dto.Embed{ - // URL: voiceURLs[0], // Assuming voice is embedded using a URL - // }, - // MsgID: id, - // MsgType: 0, // Adjust type as needed for voice - // } + // 目前不支持发语音 todo 适配base64 slik } else { - // 发文本信息 - reply = dto.MessageToCreate{ - //EventID: id, + // 返回文本信息 + return &dto.MessageToCreate{ Content: messageText, MsgID: id, - MsgType: 0, // Default type for text + MsgType: 0, // 默认文本类型 } } - - return &reply + return nil } diff --git a/handlers/send_private_msg.go b/handlers/send_private_msg.go new file mode 100644 index 00000000..ec7f0f46 --- /dev/null +++ b/handlers/send_private_msg.go @@ -0,0 +1,204 @@ +package handlers + +import ( + "context" + "fmt" + "log" + "strconv" + "time" + + "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/hoshinonyaruko/gensokyo/echo" + "github.com/hoshinonyaruko/gensokyo/idmap" + "github.com/tencent-connect/botgo/dto" + "github.com/tencent-connect/botgo/openapi" +) + +func init() { + callapi.RegisterHandler("send_private_msg", handleSendPrivateMsg) +} + +func handleSendPrivateMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { + // 使用 message.Echo 作为key来获取消息类型 + msgType := echo.GetMsgTypeByKey(message.Echo) + + switch msgType { + case "group_private": + // 解析消息内容 + messageText, foundItems := parseMessageContent(message.Params) + + // 获取 echo 的值 + echostr := message.Echo + + // 使用 echo 获取消息ID + messageID := echo.GetMsgIDByKey(echostr) + log.Println("群组发信息对应的message_id:", messageID) + log.Println("群组发信息messageText:", messageText) + log.Println("foundItems:", foundItems) + + //通过bolt数据库还原真实的GroupID + originalGroupID, err := idmap.RetrieveRowByID(message.Params.GroupID.(string)) + if err != nil { + log.Printf("Error retrieving original GroupID: %v", err) + return + } + message.Params.GroupID = originalGroupID + + // 优先发送文本信息 + if messageText != "" { + groupReply := generatePrivateMessage(messageID, nil, messageText) + + // 进行类型断言 + groupMessage, ok := groupReply.(*dto.MessageToCreate) + if !ok { + log.Println("Error: Expected MessageToCreate type.") + return // 或其他错误处理 + } + + groupMessage.Timestamp = time.Now().Unix() // 设置时间戳 + _, err := apiv2.PostGroupMessage(context.TODO(), message.Params.GroupID.(string), groupMessage) + if err != nil { + log.Printf("发送文本群组信息失败: %v", err) + } + } + + // 遍历foundItems并发送每种信息 + for key, urls := range foundItems { + var singleItem = make(map[string][]string) + singleItem[key] = urls + + groupReply := generatePrivateMessage(messageID, singleItem, "") + + // 进行类型断言 + richMediaMessage, ok := groupReply.(*dto.RichMediaMessage) + if !ok { + log.Printf("Error: Expected RichMediaMessage type for key %s.", key) + continue // 跳过这个项,继续下一个 + } + + //richMediaMessage.Timestamp = time.Now().Unix() // 设置时间戳 + _, err := apiv2.PostGroupMessage(context.TODO(), message.Params.GroupID.(string), richMediaMessage) + if err != nil { + log.Printf("发送 %s 信息失败: %v", key, err) + } + } + case "guild_private": + //当收到发私信调用 并且来源是频道 + handleSendGuildChannelPrivateMsg(client, api, apiv2, message) + default: + log.Printf("Unknown message type: %s", msgType) + } +} + +func generatePrivateMessage(id string, foundItems map[string][]string, messageText string) interface{} { + if imageURLs, ok := foundItems["local_image"]; ok && len(imageURLs) > 0 { + // 本地发图逻辑 todo 适配base64图片 + return &dto.RichMediaMessage{ + EventID: id, + FileType: 1, // 1代表图片 + URL: imageURLs[0], + Content: "", // 这个字段文档没有了 + SrvSendMsg: true, + } + } else if imageURLs, ok := foundItems["url_image"]; ok && len(imageURLs) > 0 { + // 发链接图片 + return &dto.RichMediaMessage{ + EventID: id, + FileType: 1, // 1代表图片 + URL: "http://" + imageURLs[0], + Content: "", // 这个字段文档没有了 + SrvSendMsg: true, + } + } else if voiceURLs, ok := foundItems["base64_record"]; ok && len(voiceURLs) > 0 { + // 目前不支持发语音 todo 适配base64 slik + } else { + // 返回文本信息 + return &dto.MessageToCreate{ + Content: messageText, + MsgID: id, + MsgType: 0, // 默认文本类型 + } + } + return nil +} + +func handleSendGuildChannelPrivateMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { + params := message.Params + messageText, foundItems := parseMessageContent(params) + + guildID, channelID, err := getGuildIDFromMessage(message) + if err != nil { + log.Printf("Error getting guild_id and channel_id: %v", err) + return + } + + // 获取 echo 的值 + echostr := message.Echo + messageID := echo.GetMsgIDByKey(echostr) + log.Println("私聊信息对应的message_id:", messageID) + log.Println("私聊信息messageText:", messageText) + log.Println("foundItems:", foundItems) + + timestamp := time.Now().Unix() + timestampStr := fmt.Sprintf("%d", timestamp) + + // 构造 dm (dms 私信事件) + dm := &dto.DirectMessage{ + GuildID: guildID, + ChannelID: channelID, + CreateTime: timestampStr, + } + + // 优先发送文本信息 + if messageText != "" { + textMsg := generateReplyMessage(messageID, nil, messageText) + if _, err := apiv2.PostDirectMessage(context.TODO(), dm, textMsg); err != nil { + log.Printf("发送文本信息失败: %v", err) + } + } + + // 遍历foundItems并发送每种信息 + for key, urls := range foundItems { + var singleItem = make(map[string][]string) + singleItem[key] = urls + + reply := generateReplyMessage(messageID, singleItem, "") + if _, err := apiv2.PostDirectMessage(context.TODO(), dm, reply); err != nil { + log.Printf("发送 %s 信息失败: %v", key, err) + } + } +} + +// 这个函数可以通过int类型的虚拟userid反推真实的guild_id和channel_id +func getGuildIDFromMessage(message callapi.ActionMessage) (string, string, error) { + var userID string + + // 判断UserID的类型,并将其转换为string + switch v := message.Params.UserID.(type) { + case int: + userID = strconv.Itoa(v) + case string: + userID = v + default: + return "", "", fmt.Errorf("unexpected type for UserID") + } + + // 使用RetrieveRowByID还原真实的UserID + realUserID, err := idmap.RetrieveRowByID(userID) + if err != nil { + return "", "", fmt.Errorf("error retrieving real UserID: %v", err) + } + // 使用realUserID作为sectionName从数据库中获取channel_id + channelID, err := idmap.ReadConfig(realUserID, "channel_id") + if err != nil { + return "", "", fmt.Errorf("error reading channel_id: %v", err) + } + + // 使用channelID作为sectionName从数据库中获取guild_id + guildID, err := idmap.ReadConfig(channelID, "guild_id") + if err != nil { + return "", "", fmt.Errorf("error reading guild_id: %v", err) + } + + return guildID, channelID, nil +} diff --git a/idmap/iniMapping.go b/idmap/iniMapping.go deleted file mode 100644 index a49cbbaf..00000000 --- a/idmap/iniMapping.go +++ /dev/null @@ -1,68 +0,0 @@ -package idmap - -import ( - "fmt" - "os" - "path/filepath" - - "gopkg.in/ini.v1" -) - -type IniMapping struct { - cfg *ini.File - filePath string -} - -// NewIniMapping creates a new IniMapping instance with default or provided filePath. -func NewIniMapping(optionalFilePath ...string) (*IniMapping, error) { - defaultPath := filepath.Join(".", "idmap.ini") - if len(optionalFilePath) > 0 { - defaultPath = optionalFilePath[0] - } - - cfg, err := ini.LoadSources(ini.LoadOptions{ - AllowBooleanKeys: true, - }, defaultPath) - if err != nil { - if os.IsNotExist(err) { - cfg = ini.Empty() - } else { - return nil, err - } - } - - return &IniMapping{ - cfg: cfg, - filePath: defaultPath, - }, nil -} - -// WriteConfig writes a value into the specified section and key. -func (m *IniMapping) WriteConfig(sectionName, keyName, value string) error { - section, err := m.cfg.NewSection(sectionName) - if err != nil { - return err - } - - _, err = section.NewKey(keyName, value) - if err != nil { - return err - } - - return m.cfg.SaveToIndent(m.filePath, "\t") -} - -// ReadConfig reads a value from the specified section and key. -func (m *IniMapping) ReadConfig(sectionName, keyName string) (string, error) { - section := m.cfg.Section(sectionName) - if section == nil { - return "", fmt.Errorf("section '%s' does not exist", sectionName) - } - - key := section.Key(keyName) - if key == nil { - return "", fmt.Errorf("key '%s' in section '%s' does not exist", keyName, sectionName) - } - - return key.String(), nil -} diff --git a/idmap/service.go b/idmap/service.go index 8db35aba..32709074 100644 --- a/idmap/service.go +++ b/idmap/service.go @@ -10,9 +10,10 @@ import ( ) const ( - DBName = "idmap.db" - BucketName = "ids" - CounterKey = "currentRow" + DBName = "idmap.db" + BucketName = "ids" + ConfigBucket = "config" + CounterKey = "currentRow" ) var db *bolt.DB @@ -36,6 +37,7 @@ func CloseDB() { db.Close() } +// 根据a储存b func StoreID(id string) (int64, error) { var newRow int64 @@ -72,6 +74,7 @@ func StoreID(id string) (int64, error) { return newRow, err } +// 根据b得到a func RetrieveRowByID(rowid string) (string, error) { var id string err := db.View(func(tx *bolt.Tx) error { @@ -89,3 +92,43 @@ func RetrieveRowByID(rowid string) (string, error) { return id, err } + +// 根据a 以b为类别 储存c +func WriteConfig(sectionName, keyName, value string) error { + return db.Update(func(tx *bolt.Tx) error { + b, err := tx.CreateBucketIfNotExists([]byte(ConfigBucket)) + if err != nil { + return err + } + + key := joinSectionAndKey(sectionName, keyName) + return b.Put(key, []byte(value)) + }) +} + +// 根据a和b取出c +func ReadConfig(sectionName, keyName string) (string, error) { + var result string + err := db.View(func(tx *bolt.Tx) error { + b := tx.Bucket([]byte(ConfigBucket)) + if b == nil { + return fmt.Errorf("bucket not found") + } + + key := joinSectionAndKey(sectionName, keyName) + v := b.Get(key) + if v == nil { + return fmt.Errorf("key '%s' in section '%s' does not exist", keyName, sectionName) + } + + result = string(v) + return nil + }) + + return result, err +} + +// 灵感,ini配置文件 +func joinSectionAndKey(sectionName, keyName string) []byte { + return []byte(sectionName + ":" + keyName) +} diff --git a/main.go b/main.go index 3daeed84..ea42ba69 100644 --- a/main.go +++ b/main.go @@ -87,7 +87,9 @@ func main() { // 获取 websocket 信息 这里用哪一个api获取就是用哪一个api去连接ws // 测试群时候用api2 并且要注释掉api.me - wsInfo, err := api.WS(ctx, nil, "") + //似乎正式场景都可以用apiv2(群)的方式获取ws连接,包括频道的机器人 + //疑问: 为什么无法用apiv2的方式调用频道的getme接口,会报错 + wsInfo, err := apiV2.WS(ctx, nil, "") if err != nil { log.Fatalln(err) } @@ -310,5 +312,29 @@ func getIDHandler(c *gin.Context) { return } c.JSON(http.StatusOK, gin.H{"id": id}) + + case 3: + // 存储 + section := c.Query("id") + subtype := c.Query("subtype") + value := c.Query("value") + err := idmap.WriteConfig(section, subtype, value) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + c.JSON(http.StatusOK, gin.H{"status": "success"}) + + case 4: + // 获取值 + section := c.Query("id") + subtype := c.Query("subtype") + value, err := idmap.ReadConfig(section, subtype) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + c.JSON(http.StatusOK, gin.H{"value": value}) } + } diff --git a/readme.md b/readme.md index 97f5fe50..e3515e23 100644 --- a/readme.md +++ b/readme.md @@ -110,7 +110,7 @@ todo,正在施工中 | API | 功能 | | ------------------------ | ---------------------- | -| /send_private_msg | [发送私聊消息] | +| /send_private_msg√ | [发送私聊消息] | | /send_group_msg√ | [发送群消息] | | /send_guild_channel_msg√ | [发送频道消息] | | /send_msg | [发送消息] | From 7fc1f109b687a6b4475a67a649edb9f80e85c4aa Mon Sep 17 00:00:00 2001 From: cosmo Date: Tue, 24 Oct 2023 14:47:53 +0800 Subject: [PATCH 04/36] =?UTF-8?q?=E9=80=82=E9=85=8D=E4=BA=86nonebot2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Processor/Processor.go | 21 +++- botgo/openapi/iface.go | 2 + botgo/openapi/v1/message.go | 60 ++++++++++ botgo/openapi/v2/message.go | 60 ++++++++++ callapi/callapi.go | 1 + handlers/send_group_msg.go | 80 ++++++++++++- handlers/send_guild_channel_msg.go | 122 ++++++++++++++----- handlers/send_msg.go | 185 +++++++++++++++++++++++++++++ handlers/send_private_msg.go | 30 +++-- wsclient/ws.go | 8 +- 10 files changed, 525 insertions(+), 44 deletions(-) create mode 100644 handlers/send_msg.go diff --git a/Processor/Processor.go b/Processor/Processor.go index 794a84c7..03688c23 100644 --- a/Processor/Processor.go +++ b/Processor/Processor.go @@ -86,10 +86,10 @@ type OnebotPrivateMessage struct { Time int64 `json:"time"` Avatar string `json:"avatar"` Echo string `json:"echo"` - Message interface{} `json:"message"` // For array format - MessageSeq int `json:"message_seq,omitempty"` // Optional field - Font int `json:"font,omitempty"` // Optional field - UserID int64 `json:"user_id"` // Can be either string or int depending on logic + Message interface{} `json:"message"` // For array format + MessageSeq int `json:"message_seq"` // Optional field + Font int `json:"font"` // Optional field + UserID int64 `json:"user_id"` // Can be either string or int depending on logic } type PrivateSender struct { @@ -157,6 +157,8 @@ func (p *Processor) ProcessGuildATMessage(data *dto.WSATMessageData) error { //将当前s和appid和message进行映射 echo.AddMsgID(AppIDString, s, data.ID) echo.AddMsgType(AppIDString, s, "guild") + //为不支持双向echo的ob11服务端映射 + echo.AddMsgType(AppIDString, userid64, "guild") //调试 PrintStructWithFieldNames(onebotMsg) @@ -225,6 +227,9 @@ func (p *Processor) ProcessGuildATMessage(data *dto.WSATMessageData) error { //将当前s和appid和message进行映射 echo.AddMsgID(AppIDString, s, data.ID) echo.AddMsgType(AppIDString, s, "guild") + //为不支持双向echo的ob服务端映射 + fmt.Printf("AppIDString: %s, channelIDInt: %d\n", AppIDString, int64(channelIDInt)) + echo.AddMsgType(AppIDString, int64(channelIDInt), "guild") //调试 PrintStructWithFieldNames(groupMsg) @@ -318,6 +323,8 @@ func (p *Processor) ProcessGroupMessage(data *dto.WSGroupATMessageData) error { // 将当前s和appid和message进行映射 echo.AddMsgID(AppIDString, s, data.ID) echo.AddMsgType(AppIDString, s, "group") + //为不支持双向echo的ob服务端映射 + echo.AddMsgType(AppIDString, userid64, "group") // 调试 PrintStructWithFieldNames(groupMsg) @@ -345,7 +352,7 @@ func (p *Processor) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) e //获取当前的s值 当前ws连接所收到的信息条数 s := client.GetGlobalS() - if !p.Settings.GlobalChannelToGroup { + if !p.Settings.GlobalPrivateToChannel { // 把频道类型的私信转换成普通ob11的私信 //转换appidstring @@ -395,6 +402,8 @@ func (p *Processor) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) e // 将当前s和appid和message进行映射 echo.AddMsgID(AppIDString, s, data.ID) echo.AddMsgType(AppIDString, s, "guild_private") + //其实不需要用AppIDString,因为gensokyo是单机器人框架 + echo.AddMsgType(AppIDString, userid64, "guild_private") // 调试 PrintStructWithFieldNames(privateMsg) @@ -455,6 +464,8 @@ func (p *Processor) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) e echo.AddMsgID(AppIDString, s, data.ID) //通过echo始终得知真实的事件类型,来对应调用正确的api echo.AddMsgType(AppIDString, s, "guild_private") + //为不支持双向echo的ob服务端映射 + echo.AddMsgType(AppIDString, userid64, "guild_private") //调试 PrintStructWithFieldNames(onebotMsg) diff --git a/botgo/openapi/iface.go b/botgo/openapi/iface.go index 48f237fa..03916c88 100644 --- a/botgo/openapi/iface.go +++ b/botgo/openapi/iface.go @@ -67,6 +67,8 @@ type MessageAPI interface { Message(ctx context.Context, channelID string, messageID string) (*dto.Message, error) Messages(ctx context.Context, channelID string, pager *dto.MessagesPager) ([]*dto.Message, error) PostMessage(ctx context.Context, channelID string, msg *dto.MessageToCreate) (*dto.Message, error) + // 增加的新的接口,发频道multipart信息 + PostMessageMultipart(ctx context.Context, channelID string, msg *dto.MessageToCreate, fileImageData []byte) (*dto.Message, error) PatchMessage(ctx context.Context, channelID string, messageID string, msg *dto.MessageToCreate) (*dto.Message, error) RetractMessage(ctx context.Context, channelID, msgID string, options ...RetractMessageOption) error diff --git a/botgo/openapi/v1/message.go b/botgo/openapi/v1/message.go index 1d5b271c..716bc62e 100644 --- a/botgo/openapi/v1/message.go +++ b/botgo/openapi/v1/message.go @@ -1,9 +1,11 @@ package v1 import ( + "bytes" "context" "encoding/json" "fmt" + "strconv" "github.com/tidwall/gjson" @@ -69,6 +71,64 @@ func (o *openAPI) PostMessage(ctx context.Context, channelID string, msg *dto.Me return resp.Result().(*dto.Message), nil } +// PostMessageMultipart 发送消息使用multipart/form-data +func (o *openAPI) PostMessageMultipart(ctx context.Context, channelID string, msg *dto.MessageToCreate, fileImageData []byte) (*dto.Message, error) { + request := o.request(ctx).SetResult(dto.Message{}).SetPathParam("channel_id", channelID) + + // 将MessageToCreate的字段转为multipart form data + if msg.Content != "" { + request = request.SetFormData(map[string]string{"content": msg.Content}) + } + if msg.MsgType != 0 { + request = request.SetFormData(map[string]string{"msg_type": strconv.Itoa(msg.MsgType)}) + } + if msg.Embed != nil { + request = request.SetFormData(map[string]string{"embed": toJSON(msg.Embed)}) + } + if msg.Ark != nil { + request = request.SetFormData(map[string]string{"ark": toJSON(msg.Ark)}) + } + if msg.Image != "" { + request = request.SetFormData(map[string]string{"image": msg.Image}) + } + if msg.MsgID != "" { + request = request.SetFormData(map[string]string{"msg_id": msg.MsgID}) + } + if msg.MessageReference != nil { + request = request.SetFormData(map[string]string{"message_reference": toJSON(msg.MessageReference)}) + } + if msg.Markdown != nil { + request = request.SetFormData(map[string]string{"markdown": toJSON(msg.Markdown)}) + } + if msg.Keyboard != nil { + request = request.SetFormData(map[string]string{"keyboard": toJSON(msg.Keyboard)}) + } + if msg.EventID != "" { + request = request.SetFormData(map[string]string{"event_id": msg.EventID}) + } + + // 如果提供了fileImageData,则设置file_image + if len(fileImageData) > 0 { + request = request.SetFileReader("file_image", "filename.jpg", bytes.NewReader(fileImageData)) + } + + resp, err := request.Post(o.getURL(messagesURI)) + if err != nil { + return nil, err + } + + return resp.Result().(*dto.Message), nil +} + +// 辅助函数:序列化为JSON +func toJSON(obj interface{}) string { + bytes, err := json.Marshal(obj) + if err != nil { + return "" + } + return string(bytes) +} + // PatchMessage 编辑消息 func (o *openAPI) PatchMessage(ctx context.Context, channelID string, messageID string, msg *dto.MessageToCreate) (*dto.Message, error) { diff --git a/botgo/openapi/v2/message.go b/botgo/openapi/v2/message.go index 76e5aae2..ed6a1af9 100644 --- a/botgo/openapi/v2/message.go +++ b/botgo/openapi/v2/message.go @@ -1,9 +1,11 @@ package v2 import ( + "bytes" "context" "encoding/json" "fmt" + "strconv" "github.com/tidwall/gjson" @@ -69,6 +71,64 @@ func (o *openAPIv2) PostMessage(ctx context.Context, channelID string, msg *dto. return resp.Result().(*dto.Message), nil } +// PostMessageMultipart 发送消息使用multipart/form-data +func (o *openAPIv2) PostMessageMultipart(ctx context.Context, channelID string, msg *dto.MessageToCreate, fileImageData []byte) (*dto.Message, error) { + request := o.request(ctx).SetResult(dto.Message{}).SetPathParam("channel_id", channelID) + + // 将MessageToCreate的字段转为multipart form data + if msg.Content != "" { + request = request.SetFormData(map[string]string{"content": msg.Content}) + } + if msg.MsgType != 0 { + request = request.SetFormData(map[string]string{"msg_type": strconv.Itoa(msg.MsgType)}) + } + if msg.Embed != nil { + request = request.SetFormData(map[string]string{"embed": toJSON(msg.Embed)}) + } + if msg.Ark != nil { + request = request.SetFormData(map[string]string{"ark": toJSON(msg.Ark)}) + } + if msg.Image != "" { + request = request.SetFormData(map[string]string{"image": msg.Image}) + } + if msg.MsgID != "" { + request = request.SetFormData(map[string]string{"msg_id": msg.MsgID}) + } + if msg.MessageReference != nil { + request = request.SetFormData(map[string]string{"message_reference": toJSON(msg.MessageReference)}) + } + if msg.Markdown != nil { + request = request.SetFormData(map[string]string{"markdown": toJSON(msg.Markdown)}) + } + if msg.Keyboard != nil { + request = request.SetFormData(map[string]string{"keyboard": toJSON(msg.Keyboard)}) + } + if msg.EventID != "" { + request = request.SetFormData(map[string]string{"event_id": msg.EventID}) + } + + // 如果提供了fileImageData,则设置file_image + if len(fileImageData) > 0 { + request = request.SetFileReader("file_image", "filename.jpg", bytes.NewReader(fileImageData)) + } + + resp, err := request.Post(o.getURL(messagesURI)) + if err != nil { + return nil, err + } + + return resp.Result().(*dto.Message), nil +} + +// 辅助函数:序列化为JSON +func toJSON(obj interface{}) string { + bytes, err := json.Marshal(obj) + if err != nil { + return "" + } + return string(bytes) +} + // PatchMessage 编辑消息 func (o *openAPIv2) PatchMessage(ctx context.Context, channelID string, messageID string, msg *dto.MessageToCreate) (*dto.Message, error) { diff --git a/callapi/callapi.go b/callapi/callapi.go index 4a64791c..bfd3133a 100644 --- a/callapi/callapi.go +++ b/callapi/callapi.go @@ -61,6 +61,7 @@ type Message struct { // 这是一个接口,在wsclient传入client但不需要引用wsclient包,避免循环引用 type Client interface { SendMessage(message map[string]interface{}) error + GetAppID() string } // 根据action订阅handler处理api diff --git a/handlers/send_group_msg.go b/handlers/send_group_msg.go index 2df97b68..fbd1d5b3 100644 --- a/handlers/send_group_msg.go +++ b/handlers/send_group_msg.go @@ -3,6 +3,7 @@ package handlers import ( "context" "log" + "strconv" "time" "github.com/hoshinonyaruko/gensokyo/callapi" @@ -20,6 +21,16 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap // 使用 message.Echo 作为key来获取消息类型 msgType := echo.GetMsgTypeByKey(message.Echo) + //如果获取不到 就用user_id获取信息类型 + if msgType == "" { + msgType = GetMessageTypeByUserid(client.GetAppID(), message.Params.UserID) + } + + //如果获取不到 就用group_id获取信息类型 + if msgType == "" { + msgType = GetMessageTypeByGroupid(client.GetAppID(), message.Params.GroupID) + } + switch msgType { case "group": // 解析消息内容 @@ -44,7 +55,7 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap // 优先发送文本信息 if messageText != "" { - groupReply := generateGroupMessage(messageID, nil, messageText) + groupReply := generateMessage(messageID, nil, messageText) // 进行类型断言 groupMessage, ok := groupReply.(*dto.MessageToCreate) @@ -65,7 +76,7 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap var singleItem = make(map[string][]string) singleItem[key] = urls - groupReply := generateGroupMessage(messageID, singleItem, "") + groupReply := generateMessage(messageID, singleItem, "") // 进行类型断言 richMediaMessage, ok := groupReply.(*dto.RichMediaMessage) @@ -84,6 +95,29 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap //用GroupID给ChannelID赋值,因为我们是把频道虚拟成了群 message.Params.ChannelID = message.Params.GroupID.(string) //读取ini 通过ChannelID取回之前储存的guild_id + // value, err := idmap.ReadConfig(message.Params.ChannelID, "guild_id") + // if err != nil { + // log.Printf("Error reading config: %v", err) + // return + // } + //这一句是group_private的逻辑,发频道信息用的是channelid,只有频道private需要guildid才需要这些逻辑 + //message.Params.GroupID = value + handleSendGuildChannelMsg(client, api, apiv2, message) + case "guild_private": + //用group_id还原出channelid 这是虚拟成群的私聊信息 + message.Params.ChannelID = message.Params.GroupID.(string) + //读取ini 通过ChannelID取回之前储存的guild_id + value, err := idmap.ReadConfig(message.Params.ChannelID, "guild_id") + if err != nil { + log.Printf("Error reading config: %v", err) + return + } + handleSendGuildChannelPrivateMsg(client, api, apiv2, message, &value, &message.Params.ChannelID) + case "group_private": + //用userid还原出openid 这是虚拟成群的群聊私聊信息 + //todo + message.Params.ChannelID = message.Params.GroupID.(string) + //读取ini 通过ChannelID取回之前储存的guild_id value, err := idmap.ReadConfig(message.Params.ChannelID, "guild_id") if err != nil { log.Printf("Error reading config: %v", err) @@ -127,3 +161,45 @@ func generateGroupMessage(id string, foundItems map[string][]string, messageText } return nil } + +// 通过user_id获取类型 +func GetMessageTypeByUserid(appID string, userID interface{}) string { + // 从appID和userID生成key + var userIDStr string + switch u := userID.(type) { + case int: + userIDStr = strconv.Itoa(u) + case int64: + userIDStr = strconv.FormatInt(u, 10) + case float64: + userIDStr = strconv.FormatFloat(u, 'f', 0, 64) + case string: + userIDStr = u + default: + // 可能需要处理其他类型或报错 + return "" + } + + key := appID + "_" + userIDStr + return echo.GetMsgTypeByKey(key) +} + +// 通过group_id获取类型 +func GetMessageTypeByGroupid(appID string, GroupID interface{}) string { + // 从appID和userID生成key + var GroupIDStr string + switch u := GroupID.(type) { + case int: + GroupIDStr = strconv.Itoa(u) + case int64: + GroupIDStr = strconv.FormatInt(u, 10) + case string: + GroupIDStr = u + default: + // 可能需要处理其他类型或报错 + return "" + } + + key := appID + "_" + GroupIDStr + return echo.GetMsgTypeByKey(key) +} diff --git a/handlers/send_guild_channel_msg.go b/handlers/send_guild_channel_msg.go index 6c002a60..06d24544 100644 --- a/handlers/send_guild_channel_msg.go +++ b/handlers/send_guild_channel_msg.go @@ -2,6 +2,8 @@ package handlers import ( "context" + "encoding/base64" + "fmt" "log" "github.com/hoshinonyaruko/gensokyo/callapi" @@ -17,39 +19,97 @@ func init() { } func handleSendGuildChannelMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { - params := message.Params - messageText, foundItems := parseMessageContent(params) - - channelID := params.ChannelID - // 获取 echo 的值 - echostr := message.Echo - - //messageType := echo.GetMsgTypeByKey(echostr) - messageID := echo.GetMsgIDByKey(echostr) - log.Println("频道发信息对应的message_id:", messageID) - log.Println("频道发信息messageText:", messageText) - log.Println("foundItems:", foundItems) - // 优先发送文本信息 - if messageText != "" { - textMsg := generateReplyMessage(messageID, nil, messageText) - if _, err := api.PostMessage(context.TODO(), channelID, textMsg); err != nil { - log.Printf("发送文本信息失败: %v", err) - } + // 使用 message.Echo 作为key来获取消息类型 + msgType := echo.GetMsgTypeByKey(message.Echo) + + //如果获取不到 就用user_id获取信息类型 + if msgType == "" { + msgType = GetMessageTypeByUserid(client.GetAppID(), message.Params.UserID) + } + + //如果获取不到 就用group_id获取信息类型 + if msgType == "" { + appID := client.GetAppID() + groupID := message.Params.GroupID + fmt.Printf("appID: %s, GroupID: %v\n", appID, groupID) + + msgType = GetMessageTypeByGroupid(appID, groupID) + fmt.Printf("msgType: %s\n", msgType) } - // 遍历foundItems并发送每种信息 - for key, urls := range foundItems { - var singleItem = make(map[string][]string) - singleItem[key] = urls + switch msgType { + //原生guild信息 + case "guild": + params := message.Params + messageText, foundItems := parseMessageContent(params) + + channelID := params.ChannelID + // 获取 echo 的值 + echostr := message.Echo + + //messageType := echo.GetMsgTypeByKey(echostr) + messageID := echo.GetMsgIDByKey(echostr) + log.Println("频道发信息对应的message_id:", messageID) + log.Println("频道发信息messageText:", messageText) + log.Println("foundItems:", foundItems) + // 优先发送文本信息 + if messageText != "" { + textMsg, _ := generateReplyMessage(messageID, nil, messageText) + if _, err := api.PostMessage(context.TODO(), channelID, textMsg); err != nil { + log.Printf("发送文本信息失败: %v", err) + } + } + + // 遍历foundItems并发送每种信息 + for key, urls := range foundItems { + var singleItem = make(map[string][]string) + singleItem[key] = urls + + reply, isBase64Image := generateReplyMessage(messageID, singleItem, "") + + if isBase64Image { + // 将base64内容从reply的Content转换回字节 + fileImageData, err := base64.StdEncoding.DecodeString(reply.Content) + if err != nil { + log.Printf("Base64 解码失败: %v", err) + return // 或其他的错误处理方式 + } + // 将解码后的数据保存到文件中以进行验证 + // err = ioutil.WriteFile("1.jpg", fileImageData, 0644) + // if err != nil { + // log.Printf("写入文件失败: %v", err) + // return // 或其他的错误处理方式 + // } + + // 清除reply的Content + reply.Content = "" + + // 使用Multipart方法发送 + if _, err := api.PostMessageMultipart(context.TODO(), channelID, reply, fileImageData); err != nil { + log.Printf("使用multipart发送 %s 信息失败: %v", key, err) + } + } else { + if _, err := api.PostMessage(context.TODO(), channelID, reply); err != nil { + log.Printf("发送 %s 信息失败: %v", key, err) + } + } - reply := generateReplyMessage(messageID, singleItem, "") - if _, err := api.PostMessage(context.TODO(), channelID, reply); err != nil { - log.Printf("发送 %s 信息失败: %v", key, err) } + //频道私信 此时直接取出 + case "guild_private": + params := message.Params + channelID := params.ChannelID + guildID := params.GuildID + handleSendGuildChannelPrivateMsg(client, api, apiv2, message, &guildID, &channelID) + default: + log.Printf("2Unknown message type: %s", msgType) } } -func generateReplyMessage(id string, foundItems map[string][]string, messageText string) *dto.MessageToCreate { + +// 组合发频道信息需要的MessageToCreate +func generateReplyMessage(id string, foundItems map[string][]string, messageText string) (*dto.MessageToCreate, bool) { var reply dto.MessageToCreate + var isBase64 bool if imageURLs, ok := foundItems["local_image"]; ok && len(imageURLs) > 0 { // todo 完善本地文件上传 发送机制 @@ -78,6 +138,14 @@ func generateReplyMessage(id string, foundItems map[string][]string, messageText // MsgID: id, // MsgType: 0, // Adjust type as needed for voice // } + } else if base64_image, ok := foundItems["base64_image"]; ok && len(base64_image) > 0 { + // base64图片 + reply = dto.MessageToCreate{ + Content: base64_image[0], // 直接使用base64_image[0]作为Content + MsgID: id, + MsgType: 0, // Default type for text + } + isBase64 = true } else { // 发文本信息 reply = dto.MessageToCreate{ @@ -88,5 +156,5 @@ func generateReplyMessage(id string, foundItems map[string][]string, messageText } } - return &reply + return &reply, isBase64 } diff --git a/handlers/send_msg.go b/handlers/send_msg.go new file mode 100644 index 00000000..15b36d96 --- /dev/null +++ b/handlers/send_msg.go @@ -0,0 +1,185 @@ +package handlers + +import ( + "context" + "fmt" + "log" + "time" + + "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/hoshinonyaruko/gensokyo/echo" + "github.com/hoshinonyaruko/gensokyo/idmap" + "github.com/tencent-connect/botgo/dto" + "github.com/tencent-connect/botgo/openapi" +) + +func init() { + callapi.RegisterHandler("send_msg", handleSendMsg) +} + +func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { + // 使用 message.Echo 作为key来获取消息类型 + msgType := echo.GetMsgTypeByKey(message.Echo) + + //如果获取不到 就用user_id获取信息类型 + if msgType == "" { + msgType = GetMessageTypeByUserid(client.GetAppID(), message.Params.UserID) + } + + //如果获取不到 就用group_id获取信息类型 + if msgType == "" { + appID := client.GetAppID() + groupID := message.Params.GroupID + fmt.Printf("appID: %s, GroupID: %v\n", appID, groupID) + + msgType = GetMessageTypeByGroupid(appID, groupID) + fmt.Printf("msgType: %s\n", msgType) + } + + switch msgType { + case "group": + // 解析消息内容 + messageText, foundItems := parseMessageContent(message.Params) + + // 获取 echo 的值 + echostr := message.Echo + + // 使用 echo 获取消息ID + messageID := echo.GetMsgIDByKey(echostr) + log.Println("群组发信息对应的message_id:", messageID) + log.Println("群组发信息messageText:", messageText) + log.Println("foundItems:", foundItems) + + //通过bolt数据库还原真实的GroupID + originalGroupID, err := idmap.RetrieveRowByID(message.Params.GroupID.(string)) + if err != nil { + log.Printf("Error retrieving original GroupID: %v", err) + return + } + message.Params.GroupID = originalGroupID + + // 优先发送文本信息 + if messageText != "" { + groupReply := generateGroupMessage(messageID, nil, messageText) + + // 进行类型断言 + groupMessage, ok := groupReply.(*dto.MessageToCreate) + if !ok { + log.Println("Error: Expected MessageToCreate type.") + return // 或其他错误处理 + } + + groupMessage.Timestamp = time.Now().Unix() // 设置时间戳 + _, err := apiv2.PostGroupMessage(context.TODO(), message.Params.GroupID.(string), groupMessage) + if err != nil { + log.Printf("发送文本群组信息失败: %v", err) + } + } + + // 遍历foundItems并发送每种信息 + for key, urls := range foundItems { + var singleItem = make(map[string][]string) + singleItem[key] = urls + + groupReply := generateGroupMessage(messageID, singleItem, "") + + // 进行类型断言 + richMediaMessage, ok := groupReply.(*dto.RichMediaMessage) + if !ok { + log.Printf("Error: Expected RichMediaMessage type for key %s.", key) + continue // 跳过这个项,继续下一个 + } + + //richMediaMessage.Timestamp = time.Now().Unix() // 设置时间戳 + _, err := apiv2.PostGroupMessage(context.TODO(), message.Params.GroupID.(string), richMediaMessage) + if err != nil { + log.Printf("发送 %s 信息失败: %v", key, err) + } + } + case "guild": + //用GroupID给ChannelID赋值,因为我们是把频道虚拟成了群 + message.Params.ChannelID = message.Params.GroupID.(string) + //读取ini 通过ChannelID取回之前储存的guild_id + // value, err := idmap.ReadConfig(message.Params.ChannelID, "guild_id") + // if err != nil { + // log.Printf("Error reading config: %v", err) + // return + // } + // message.Params.GroupID = value + handleSendGuildChannelMsg(client, api, apiv2, message) + case "guild_private": + //send_msg比具体的send_xxx少一层,其包含的字段类型在虚拟化场景已经失去作用 + //根据userid绑定得到的具体真实事件类型,这里也有多种可能性 + //1,私聊(但虚拟成了群),这里用群号取得需要的id + //2,频道私聊(但虚拟成了私聊)这里传递2个nil,用user_id去推测channel_id和guild_id + + var channelIDPtr *string + var GuildidPtr *string + + // 先尝试将GroupID断言为字符串 + if channelID, ok := message.Params.GroupID.(string); ok && channelID != "" { + channelIDPtr = &channelID + // 读取bolt数据库 通过ChannelID取回之前储存的guild_id + if value, err := idmap.ReadConfig(channelID, "guild_id"); err == nil && value != "" { + GuildidPtr = &value + } else { + log.Printf("Error reading config: %v", err) + } + } + + if channelIDPtr == nil || GuildidPtr == nil { + log.Printf("Value or ChannelID is empty or in error. Value: %v, ChannelID: %v", GuildidPtr, channelIDPtr) + } + + handleSendGuildChannelPrivateMsg(client, api, apiv2, message, GuildidPtr, channelIDPtr) + + case "group_private": + //用userid还原出openid 这是虚拟成群的群聊私聊信息 + //todo + message.Params.ChannelID = message.Params.GroupID.(string) + //读取ini 通过ChannelID取回之前储存的guild_id + value, err := idmap.ReadConfig(message.Params.ChannelID, "guild_id") + if err != nil { + log.Printf("Error reading config: %v", err) + return + } + message.Params.GroupID = value + handleSendGuildChannelMsg(client, api, apiv2, message) + default: + log.Printf("1Unknown message type: %s", msgType) + } +} + +func generateMessage(id string, foundItems map[string][]string, messageText string) interface{} { + if imageURLs, ok := foundItems["local_image"]; ok && len(imageURLs) > 0 { + // 本地发图逻辑 todo 适配base64图片 + return &dto.RichMediaMessage{ + EventID: id, + FileType: 1, // 1代表图片 + URL: imageURLs[0], + Content: "", // 这个字段文档没有了 + SrvSendMsg: true, + } + } else if imageURLs, ok := foundItems["url_image"]; ok && len(imageURLs) > 0 { + // 发链接图片 + return &dto.RichMediaMessage{ + EventID: id, + FileType: 1, // 1代表图片 + URL: "http://" + imageURLs[0], + Content: "", // 这个字段文档没有了 + SrvSendMsg: true, + } + } else if base64_image, ok := foundItems["base64_image"]; ok && len(base64_image) > 0 { + // 目前不支持发语音 todo 适配base64 slik + } else if voiceURLs, ok := foundItems["base64_record"]; ok && len(voiceURLs) > 0 { + // 目前不支持发语音 todo 适配base64 slik + } else { + // 返回文本信息 + return &dto.MessageToCreate{ + Content: messageText, + MsgID: id, + MsgType: 0, // 默认文本类型 + } + } + return nil +} diff --git a/handlers/send_private_msg.go b/handlers/send_private_msg.go index ec7f0f46..6de9308f 100644 --- a/handlers/send_private_msg.go +++ b/handlers/send_private_msg.go @@ -84,7 +84,7 @@ func handleSendPrivateMsg(client callapi.Client, api openapi.OpenAPI, apiv2 open } case "guild_private": //当收到发私信调用 并且来源是频道 - handleSendGuildChannelPrivateMsg(client, api, apiv2, message) + handleSendGuildChannelPrivateMsg(client, api, apiv2, message, nil, nil) default: log.Printf("Unknown message type: %s", msgType) } @@ -122,14 +122,24 @@ func generatePrivateMessage(id string, foundItems map[string][]string, messageTe return nil } -func handleSendGuildChannelPrivateMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { +// 处理频道私信 最后2个指针参数可空 代表使用userid倒推 +func handleSendGuildChannelPrivateMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage, optionalGuildID *string, optionalChannelID *string) { params := message.Params messageText, foundItems := parseMessageContent(params) - guildID, channelID, err := getGuildIDFromMessage(message) - if err != nil { - log.Printf("Error getting guild_id and channel_id: %v", err) - return + var guildID, channelID string + var err error + + if optionalGuildID != nil && optionalChannelID != nil { + guildID = *optionalGuildID + channelID = *optionalChannelID + } else { + //默认私信场景 通过仅有的userid来还原频道私信需要的guildid + guildID, channelID, err = getGuildIDFromMessage(message) + if err != nil { + log.Printf("获取 guild_id 和 channel_id 出错: %v", err) + return + } } // 获取 echo 的值 @@ -151,7 +161,7 @@ func handleSendGuildChannelPrivateMsg(client callapi.Client, api openapi.OpenAPI // 优先发送文本信息 if messageText != "" { - textMsg := generateReplyMessage(messageID, nil, messageText) + textMsg, _ := generateReplyMessage(messageID, nil, messageText) if _, err := apiv2.PostDirectMessage(context.TODO(), dm, textMsg); err != nil { log.Printf("发送文本信息失败: %v", err) } @@ -162,7 +172,7 @@ func handleSendGuildChannelPrivateMsg(client callapi.Client, api openapi.OpenAPI var singleItem = make(map[string][]string) singleItem[key] = urls - reply := generateReplyMessage(messageID, singleItem, "") + reply, _ := generateReplyMessage(messageID, singleItem, "") if _, err := apiv2.PostDirectMessage(context.TODO(), dm, reply); err != nil { log.Printf("发送 %s 信息失败: %v", key, err) } @@ -177,10 +187,12 @@ func getGuildIDFromMessage(message callapi.ActionMessage) (string, string, error switch v := message.Params.UserID.(type) { case int: userID = strconv.Itoa(v) + case float64: + userID = strconv.FormatInt(int64(v), 10) // 将float64先转为int64,然后再转为string case string: userID = v default: - return "", "", fmt.Errorf("unexpected type for UserID") + return "", "", fmt.Errorf("unexpected type for UserID: %T", v) // 使用%T来打印具体的类型 } // 使用RetrieveRowByID还原真实的UserID diff --git a/wsclient/ws.go b/wsclient/ws.go index 7f870d09..8e8207dd 100644 --- a/wsclient/ws.go +++ b/wsclient/ws.go @@ -17,6 +17,12 @@ type WebSocketClient struct { conn *websocket.Conn api openapi.OpenAPI apiv2 openapi.OpenAPI + appid string +} + +// 获取appid +func (c *WebSocketClient) GetAppID() string { + return c.appid } // 发送json信息给onebot应用端 @@ -126,7 +132,7 @@ func NewWebSocketClient(urlStr string, botID string, api openapi.OpenAPI, apiv2 } } - client := &WebSocketClient{conn: conn, api: api, apiv2: apiv2} + client := &WebSocketClient{conn: conn, api: api, apiv2: apiv2, appid: botID} // Sending initial message similar to your setupB function message := map[string]interface{}{ From 1336c6a5544582b5594a47d135b677df2e861b3d Mon Sep 17 00:00:00 2001 From: cosmo Date: Tue, 24 Oct 2023 17:50:17 +0800 Subject: [PATCH 05/36] add license --- LICENSE | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ readme.md | 2 +- 2 files changed, 675 insertions(+), 1 deletion(-) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..e72bfdda --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. \ No newline at end of file diff --git a/readme.md b/readme.md index e3515e23..5087bd86 100644 --- a/readme.md +++ b/readme.md @@ -14,7 +14,7 @@ _✨ 基于 [OneBot](https://github.com/howmanybots/onebot/blob/master/README.md

- + license From b094949eef2f4efb43542dc6e2608ec13f8cf420 Mon Sep 17 00:00:00 2001 From: cosmo Date: Wed, 25 Oct 2023 14:22:09 +0800 Subject: [PATCH 06/36] add a lot --- .gitignore | 5 +- Processor/ProcessChannelDirectMessage.go | 16 +- Processor/ProcessGroupMessage.go | 8 +- Processor/ProcessGuildATMessage.go | 10 +- Processor/ProcessGuildNormalMessage.go | 10 +- botgo/token/authtoken.go | 98 +++++----- botgo/token/token.go | 14 +- callapi/callapi.go | 40 +++- config/config.go | 64 +++++- config_template.go | 34 ++++ config_template.yml | 36 ++-- handlers/get_group_info.go | 2 +- handlers/send_group_msg.go | 75 +++++-- handlers/send_guild_channel_msg.go | 4 +- handlers/send_msg.go | 71 +++++-- handlers/send_private_msg.go | 16 +- idmap/service.go | 164 +++++++++++++++- main.go | 101 ++++------ readme.md | 4 +- server/getIDHandler.go | 64 ++++++ server/uploadpic.go | 238 +++++++++++++++++++++++ wsclient/ws.go | 5 +- 22 files changed, 872 insertions(+), 207 deletions(-) create mode 100644 config_template.go create mode 100644 server/getIDHandler.go create mode 100644 server/uploadpic.go diff --git a/.gitignore b/.gitignore index 52efd70d..4a3dc0c7 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,7 @@ idmap.ini # Go specific go.mod go.sum -*.exe \ No newline at end of file +*.exe + +# Ignore channel_temp +channel_temp/ \ No newline at end of file diff --git a/Processor/ProcessChannelDirectMessage.go b/Processor/ProcessChannelDirectMessage.go index 4ff809d4..e2418474 100644 --- a/Processor/ProcessChannelDirectMessage.go +++ b/Processor/ProcessChannelDirectMessage.go @@ -36,14 +36,14 @@ func (p *Processor) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) e echostr := AppIDString + "_" + strconv.FormatInt(s, 10) //将真实id转为int userid64 - userid64, err := idmap.StoreID(data.Author.ID) + userid64, err := idmap.StoreIDv2(data.Author.ID) if err != nil { log.Fatalf("Error storing ID: %v", err) } //将真实id写入数据库,可取出ChannelID - idmap.WriteConfig(data.Author.ID, "channel_id", data.ChannelID) + idmap.WriteConfigv2(data.Author.ID, "channel_id", data.ChannelID) //将channelid写入数据库,可取出guild_id - idmap.WriteConfig(data.ChannelID, "guild_id", data.GuildID) + idmap.WriteConfigv2(data.ChannelID, "guild_id", data.GuildID) //收到私聊信息调用的具体还原步骤 //1,idmap还原真实userid, @@ -51,7 +51,7 @@ func (p *Processor) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) e //3,通过idmap用channelid获取guildid, //发信息使用的是guildid //todo 优化数据库读写次数 - messageID64, err := idmap.StoreID(data.ID) + messageID64, err := idmap.StoreIDv2(data.ID) if err != nil { log.Fatalf("Error storing ID: %v", err) } @@ -109,7 +109,7 @@ func (p *Processor) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) e //构造echo echostr := AppIDString + "_" + strconv.FormatInt(s, 10) //映射str的userid到int - userid64, err := idmap.StoreID(data.Author.ID) + userid64, err := idmap.StoreIDv2(data.Author.ID) if err != nil { log.Printf("Error storing ID: %v", err) return nil @@ -159,7 +159,7 @@ func (p *Processor) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) e } else { //将频道信息转化为群信息(特殊需求情况下) //将channelid写入ini,可取出guild_id - idmap.WriteConfig(data.ChannelID, "guild_id", data.GuildID) + idmap.WriteConfigv2(data.ChannelID, "guild_id", data.GuildID) //转换at messageText := handlers.RevertTransformedText(data.Content) //转换appid @@ -173,14 +173,14 @@ func (p *Processor) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) e return fmt.Errorf("failed to convert ChannelID to int: %v", err) } //映射str的userid到int - userid64, err := idmap.StoreID(data.Author.ID) + userid64, err := idmap.StoreIDv2(data.Author.ID) if err != nil { log.Printf("Error storing ID: %v", err) return nil } //userid := int(userid64) //映射str的messageID到int - messageID64, err := idmap.StoreID(data.ID) + messageID64, err := idmap.StoreIDv2(data.ID) if err != nil { log.Printf("Error storing ID: %v", err) return nil diff --git a/Processor/ProcessGroupMessage.go b/Processor/ProcessGroupMessage.go index cce7a28e..0c823e80 100644 --- a/Processor/ProcessGroupMessage.go +++ b/Processor/ProcessGroupMessage.go @@ -20,7 +20,7 @@ func (p *Processor) ProcessGroupMessage(data *dto.WSGroupATMessageData) error { // 获取s s := client.GetGlobalS() - idmap.WriteConfig(data.ChannelID, "guild_id", data.GuildID) + idmap.WriteConfigv2(data.ChannelID, "guild_id", data.GuildID) // 转换at messageText := handlers.RevertTransformedText(data.Content) @@ -32,20 +32,20 @@ func (p *Processor) ProcessGroupMessage(data *dto.WSGroupATMessageData) error { echostr := AppIDString + "_" + strconv.FormatInt(s, 10) // 映射str的GroupID到int - GroupID64, err := idmap.StoreID(data.GroupID) + GroupID64, err := idmap.StoreIDv2(data.GroupID) if err != nil { return fmt.Errorf("failed to convert ChannelID to int: %v", err) } // 映射str的userid到int - userid64, err := idmap.StoreID(data.Author.ID) + userid64, err := idmap.StoreIDv2(data.Author.ID) if err != nil { log.Printf("Error storing ID: %v", err) return nil } //userid := int(userid64) //映射str的messageID到int - messageID64, err := idmap.StoreID(data.ID) + messageID64, err := idmap.StoreIDv2(data.ID) if err != nil { log.Printf("Error storing ID: %v", err) return nil diff --git a/Processor/ProcessGuildATMessage.go b/Processor/ProcessGuildATMessage.go index 919f3ea9..68a8ed27 100644 --- a/Processor/ProcessGuildATMessage.go +++ b/Processor/ProcessGuildATMessage.go @@ -32,14 +32,14 @@ func (p *Processor) ProcessGuildATMessage(data *dto.WSATMessageData) error { //构造echo echostr := AppIDString + "_" + strconv.FormatInt(s, 10) //映射str的userid到int - userid64, err := idmap.StoreID(data.Author.ID) + userid64, err := idmap.StoreIDv2(data.Author.ID) if err != nil { log.Printf("Error storing ID: %v", err) return nil } //映射str的messageID到int //可以是string - // messageID64, err := idmap.StoreID(data.ID) + // messageID64, err := idmap.StoreIDv2(data.ID) // if err != nil { // log.Printf("Error storing ID: %v", err) // return nil @@ -93,7 +93,7 @@ func (p *Processor) ProcessGuildATMessage(data *dto.WSATMessageData) error { //获取s s := client.GetGlobalS() //将channelid写入ini,可取出guild_id todo 比ini更好的储存方式 - idmap.WriteConfig(data.ChannelID, "guild_id", data.GuildID) + idmap.WriteConfigv2(data.ChannelID, "guild_id", data.GuildID) //转换at messageText := handlers.RevertTransformedText(data.Content) //转换appid @@ -107,14 +107,14 @@ func (p *Processor) ProcessGuildATMessage(data *dto.WSATMessageData) error { return fmt.Errorf("failed to convert ChannelID to int: %v", err) } //映射str的userid到int - userid64, err := idmap.StoreID(data.Author.ID) + userid64, err := idmap.StoreIDv2(data.Author.ID) if err != nil { log.Printf("Error storing ID: %v", err) return nil } //userid := int(userid64) //映射str的messageID到int - messageID64, err := idmap.StoreID(data.ID) + messageID64, err := idmap.StoreIDv2(data.ID) if err != nil { log.Printf("Error storing ID: %v", err) return nil diff --git a/Processor/ProcessGuildNormalMessage.go b/Processor/ProcessGuildNormalMessage.go index 9d66baaf..cba53ac2 100644 --- a/Processor/ProcessGuildNormalMessage.go +++ b/Processor/ProcessGuildNormalMessage.go @@ -31,14 +31,14 @@ func (p *Processor) ProcessGuildNormalMessage(data *dto.WSMessageData) error { //构造echo echostr := AppIDString + "_" + strconv.FormatInt(s, 10) //映射str的userid到int - userid64, err := idmap.StoreID(data.Author.ID) + userid64, err := idmap.StoreIDv2(data.Author.ID) if err != nil { log.Printf("Error storing ID: %v", err) return nil } //映射str的messageID到int //可以是string - // messageID64, err := idmap.StoreID(data.ID) + // messageID64, err := idmap.StoreIDv2(data.ID) // if err != nil { // log.Printf("Error storing ID: %v", err) // return nil @@ -92,7 +92,7 @@ func (p *Processor) ProcessGuildNormalMessage(data *dto.WSMessageData) error { //获取s s := client.GetGlobalS() //将channelid写入ini,可取出guild_id todo 比ini更好的储存方式 - idmap.WriteConfig(data.ChannelID, "guild_id", data.GuildID) + idmap.WriteConfigv2(data.ChannelID, "guild_id", data.GuildID) //转换at messageText := handlers.RevertTransformedText(data.Content) //转换appid @@ -106,14 +106,14 @@ func (p *Processor) ProcessGuildNormalMessage(data *dto.WSMessageData) error { return fmt.Errorf("failed to convert ChannelID to int: %v", err) } //映射str的userid到int - userid64, err := idmap.StoreID(data.Author.ID) + userid64, err := idmap.StoreIDv2(data.Author.ID) if err != nil { log.Printf("Error storing ID: %v", err) return nil } //userid := int(userid64) //映射str的messageID到int - messageID64, err := idmap.StoreID(data.ID) + messageID64, err := idmap.StoreIDv2(data.ID) if err != nil { log.Printf("Error storing ID: %v", err) return nil diff --git a/botgo/token/authtoken.go b/botgo/token/authtoken.go index b40695be..303b302d 100644 --- a/botgo/token/authtoken.go +++ b/botgo/token/authtoken.go @@ -54,59 +54,59 @@ func (atoken *AuthTokenInfo) ForceUpToken(ctx context.Context, reason string) er // StartRefreshAccessToken 启动获取AccessToken的后台刷新 // 该函数首先会立即查询一次AccessToken,并保存。 // 然后它将在后台启动一个goroutine,定期(根据token的有效期)刷新AccessToken。 -func (atoken *AuthTokenInfo) StartRefreshAccessToken(ctx context.Context, tokenURL, appID, clientSecrent string) (err error) { - // 首先,立即获取一次AccessToken - tokenInfo, err := queryAccessToken(ctx, tokenURL, appID, clientSecrent) - if err != nil { - return err - } - atoken.setAuthToken(tokenInfo) - fmt.Printf("获取到的token是: %s\n", tokenInfo.Token) // 输出获取到的token - - // 获取token的有效期(通常以秒为单位) - tokenTTL := tokenInfo.ExpiresIn - // 使用sync.Once保证仅启动一个goroutine进行定时刷新 - atoken.once.Do(func() { - go func() { // 启动一个新的goroutine - for { - // 如果tokenTTL为0或负数,将其设置为1 - if tokenTTL <= 0 { - tokenTTL = 1 - } - select { - case <-time.NewTimer(time.Duration(tokenTTL) * time.Second).C: // 当token过期时 - case upToken := <-atoken.forceUpToken: // 接收强制更新token的信号 - log.Warnf("recv uptoken info:%v", upToken) - case <-ctx.Done(): // 当上下文结束时,退出goroutine - log.Warnf("recv ctx:%v exit refreshAccessToken", ctx.Err()) - return - } - // 查询并获取新的AccessToken - tokenInfo, err := queryAccessToken(ctx, tokenURL, appID, clientSecrent) - if err == nil { - atoken.setAuthToken(tokenInfo) - fmt.Printf("获取到的token是: %s\n", tokenInfo.Token) // 输出获取到的token - tokenTTL = tokenInfo.ExpiresIn - } else { - log.Errorf("queryAccessToken err:%v", err) - } - } - }() - }) - return -} - -// 测试用 // func (atoken *AuthTokenInfo) StartRefreshAccessToken(ctx context.Context, tokenURL, appID, clientSecrent string) (err error) { -// // 创建一个固定的token信息 -// fixedTokenInfo := AccessTokenInfo{ -// Token: "SMvPWUBuXwSyAj1UmvTKVcK7D0iEaBrmbTKVNaJFMk9S5RmpgnGvNOOOTvrqG64NhuER-e-jK2IT", -// ExpiresIn: 3600, // 这里假设token的有效时间是3600秒,你可以根据需要调整 +// // 首先,立即获取一次AccessToken +// tokenInfo, err := queryAccessToken(ctx, tokenURL, appID, clientSecrent) +// if err != nil { +// return err // } -// atoken.setAuthToken(fixedTokenInfo) -// return nil +// atoken.setAuthToken(tokenInfo) +// fmt.Printf("获取到的token是: %s\n", tokenInfo.Token) // 输出获取到的token + +// // 获取token的有效期(通常以秒为单位) +// tokenTTL := tokenInfo.ExpiresIn +// // 使用sync.Once保证仅启动一个goroutine进行定时刷新 +// atoken.once.Do(func() { +// go func() { // 启动一个新的goroutine +// for { +// // 如果tokenTTL为0或负数,将其设置为1 +// if tokenTTL <= 0 { +// tokenTTL = 1 +// } +// select { +// case <-time.NewTimer(time.Duration(tokenTTL) * time.Second).C: // 当token过期时 +// case upToken := <-atoken.forceUpToken: // 接收强制更新token的信号 +// log.Warnf("recv uptoken info:%v", upToken) +// case <-ctx.Done(): // 当上下文结束时,退出goroutine +// log.Warnf("recv ctx:%v exit refreshAccessToken", ctx.Err()) +// return +// } +// // 查询并获取新的AccessToken +// tokenInfo, err := queryAccessToken(ctx, tokenURL, appID, clientSecrent) +// if err == nil { +// atoken.setAuthToken(tokenInfo) +// fmt.Printf("获取到的token是: %s\n", tokenInfo.Token) // 输出获取到的token +// tokenTTL = tokenInfo.ExpiresIn +// } else { +// log.Errorf("queryAccessToken err:%v", err) +// } +// } +// }() +// }) +// return // } +// 测试用 +func (atoken *AuthTokenInfo) StartRefreshAccessToken(ctx context.Context, tokenURL, appID, clientSecrent string) (err error) { + // 创建一个固定的token信息 + fixedTokenInfo := AccessTokenInfo{ + Token: "PpAPgoel0-gTeaxy-ydak0kUKxJrCSlbLcwtuPt99jCPVrahkqh3WSiIy9s63tCZnTEp4asw035u", + ExpiresIn: 3600, // 这里假设token的有效时间是3600秒,你可以根据需要调整 + } + atoken.setAuthToken(fixedTokenInfo) + return nil +} + func (atoken *AuthTokenInfo) getAuthToken() AccessTokenInfo { atoken.lock.RLock() defer atoken.lock.RUnlock() diff --git a/botgo/token/token.go b/botgo/token/token.go index 2b0ad8f7..b669b243 100644 --- a/botgo/token/token.go +++ b/botgo/token/token.go @@ -91,16 +91,16 @@ func (t *Token) GetString_old() string { } // GetAccessToken 取得鉴权Token -func (t *Token) GetAccessToken() string { - return t.authToken.getAuthToken().Token -} - -// GetAccessToken 取得测试鉴权Token // func (t *Token) GetAccessToken() string { -// // 固定的token值 -// return "SMvPWUBuXwSyAj1UmvTKVcK7D0iEaBrmbTKVNaJFMk9S5RmpgnGvNOOOTvrqG64NhuER-e-jK2IT" +// return t.authToken.getAuthToken().Token // } +// GetAccessToken 取得测试鉴权Token +func (t *Token) GetAccessToken() string { + // 固定的token值 + return "PpAPgoel0-gTeaxy-ydak0kUKxJrCSlbLcwtuPt99jCPVrahkqh3WSiIy9s63tCZnTEp4asw035u" +} + // UpAccessToken 更新accessToken func (t *Token) UpAccessToken(ctx context.Context, reason interface{}) error { return t.authToken.ForceUpToken(ctx, fmt.Sprint(reason)) diff --git a/callapi/callapi.go b/callapi/callapi.go index bfd3133a..445ea523 100644 --- a/callapi/callapi.go +++ b/callapi/callapi.go @@ -4,15 +4,53 @@ import ( "encoding/json" "fmt" "log" + "strconv" "github.com/tencent-connect/botgo/openapi" ) +type EchoData struct { + Seq int `json:"seq"` +} + +type EchoContent string + +func (e *EchoContent) UnmarshalJSON(data []byte) error { + // 尝试解析为字符串 + var strVal string + if err := json.Unmarshal(data, &strVal); err == nil { + *e = EchoContent(strVal) + return nil + } + + // 尝试解析为整数 + var intVal int + if err := json.Unmarshal(data, &intVal); err == nil { + *e = EchoContent(strconv.Itoa(intVal)) + return nil + } + + // 尝试解析为EchoData结构体 + var echoData EchoData + if err := json.Unmarshal(data, &echoData); err == nil { + *e = EchoContent(strconv.Itoa(echoData.Seq)) + return nil + } + + // 如果都不符合预期,设置为空字符串 + *e = "" + return nil +} + +// func (e EchoContent) String() string { +// return string(e) +// } + // onebot发来的action调用信息 type ActionMessage struct { Action string `json:"action"` Params ParamsContent `json:"params"` - Echo string `json:"echo,omitempty"` + Echo EchoContent `json:"echo,omitempty"` } // params类型 diff --git a/config/config.go b/config/config.go index f9ca74d1..8019b144 100644 --- a/config/config.go +++ b/config/config.go @@ -3,11 +3,18 @@ package config import ( + "log" "os" + "sync" "gopkg.in/yaml.v3" ) +var ( + instance *Config + mu sync.Mutex +) + type Config struct { Version int `yaml:"version"` Settings Settings `yaml:"settings"` @@ -22,9 +29,12 @@ type Settings struct { GlobalChannelToGroup bool `yaml:"global_channel_to_group"` GlobalPrivateToChannel bool `yaml:"global_private_to_channel"` Array bool `yaml:"array"` + Server_dir string `yaml:"server_dir"` + Lotus bool `yaml:"lotus"` + Port string `yaml:"port"` } -// LoadConfig 从文件中加载配置 +// LoadConfig 从文件中加载配置并初始化单例配置 func LoadConfig(path string) (*Config, error) { configData, err := os.ReadFile(path) if err != nil { @@ -37,5 +47,57 @@ func LoadConfig(path string) (*Config, error) { return nil, err } + mu.Lock() + if instance == nil { + instance = conf + } + mu.Unlock() + return conf, nil } + +// 获取ws地址 +func GetWsAddress() string { + mu.Lock() + defer mu.Unlock() + if instance != nil { + return instance.Settings.WsAddress + } + return "" +} + +// 获取gensokyo服务的地址 +func GetServer_dir() string { + mu.Lock() + defer mu.Unlock() + + if instance == nil { + log.Println("Warning: instance is nil when trying to get upload directory.") + return "" + } + return instance.Settings.Server_dir +} + +// 获取lotus的值 +func GetLotusValue() bool { + mu.Lock() + defer mu.Unlock() + + if instance == nil { + log.Println("Warning: instance is nil when trying to get lotus value.") + return false + } + return instance.Settings.Lotus +} + +// 获取port的值 +func GetPortValue() string { + mu.Lock() + defer mu.Unlock() + + if instance == nil { + log.Println("Warning: instance is nil when trying to get port value.") + return "" + } + return instance.Settings.Port +} diff --git a/config_template.go b/config_template.go new file mode 100644 index 00000000..69999947 --- /dev/null +++ b/config_template.go @@ -0,0 +1,34 @@ +package main + +const configTemplate = ` +version: 1 +settings: + ws_address: "ws://:" # WebSocket服务的地址 + app_id: # 你的应用ID + token: "" # 你的应用令牌 + client_secret: "" # 你的客户端密钥 + + text_intent: # 请根据公域 私域来选择intent,错误的intent将连接失败 + - "ATMessageEventHandler" # 频道at信息 + - "DirectMessageHandler" # 私域频道私信(dms) + # - "ReadyHandler" # 连接成功 + # - "ErrorNotifyHandler" # 连接关闭 + # - "GuildEventHandler" # 频道事件 + # - "MemberEventHandler" # 频道成员新增 + # - "ChannelEventHandler" # 频道事件 + # - "CreateMessageHandler" # 频道不at信息 + # - "InteractionHandler" # 添加频道互动回应 + # - "GroupATMessageEventHandler" # 群at信息 仅频道机器人时候需要注释 + # - "C2CMessageEventHandler" # 群私聊 仅频道机器人时候需要注释 + # - "ThreadEventHandler" # 发帖事件 (当前版本已禁用) + + global_channel_to_group: false # 是否将频道转换成群 + global_private_to_channel: false # 是否将私聊转换成频道 + array: false + + server_dir: ":" # 提供图片上传服务的服务器(图床)需要带端口号. 如果需要发base64图,需为公网ip,且开放对应端口 + port: "" # idmaps和图床对外开放的端口号 + lotus: false # lotus特性默认为false,当为true时,将会连接到另一个lotus为false的gensokyo。 + # 使用它提供的图床和idmaps服务(场景:同一个机器人在不同服务器运行,或内网需要发送base64图)。 + # 如果需要发送base64图片,需要设置正确的公网server_dir和开放对应的port +` diff --git a/config_template.yml b/config_template.yml index 7dfbf44e..bbfd3259 100644 --- a/config_template.yml +++ b/config_template.yml @@ -4,19 +4,27 @@ settings: app_id: # 你的应用ID token: "" # 你的应用令牌 client_secret: "" # 你的客户端密钥 -text_intent: #请根据公域 私域来选择intent,错误的intent将连接失败 - - "ATMessageEventHandler" # 频道at信息 - - "DirectMessageHandler" # 私域频道私信(dms) - # - "ReadyHandler" # 连接成功 - # - "ErrorNotifyHandler" # 连接关闭 - # - "GuildEventHandler" # 频道事件 - # - "MemberEventHandler" # 频道成员新增 - # - "ChannelEventHandler" # 频道事件 - # - "CreateMessageHandler" # 频道不at信息 - # - "InteractionHandler" # 添加频道互动回应 - # - "GroupATMessageEventHandler" # 群at信息 仅频道机器人时候需要注释 - # - "C2CMessageEventHandler" # 群私聊 仅频道机器人时候需要注释 - # - "ThreadEventHandler" # 发帖事件 (当前版本已禁用) + + text_intent: # 请根据公域 私域来选择intent,错误的intent将连接失败 + - "ATMessageEventHandler" # 频道at信息 + - "DirectMessageHandler" # 私域频道私信(dms) + # - "ReadyHandler" # 连接成功 + # - "ErrorNotifyHandler" # 连接关闭 + # - "GuildEventHandler" # 频道事件 + # - "MemberEventHandler" # 频道成员新增 + # - "ChannelEventHandler" # 频道事件 + # - "CreateMessageHandler" # 频道不at信息 + # - "InteractionHandler" # 添加频道互动回应 + # - "GroupATMessageEventHandler" # 群at信息 仅频道机器人时候需要注释 + # - "C2CMessageEventHandler" # 群私聊 仅频道机器人时候需要注释 + # - "ThreadEventHandler" # 发帖事件 (当前版本已禁用) + global_channel_to_group: false # 是否将频道转换成群 global_private_to_channel: false # 是否将私聊转换成频道 - array: false \ No newline at end of file + array: false + + server_dir: ":" # 提供图片上传服务的服务器(图床)需要带端口号. 如果需要发base64图,需为公网ip,且开放对应端口 + port: "" # idmaps和图床对外开放的端口号 + lotus: false # lotus特性默认为false,当为true时,将会连接到另一个lotus为false的gensokyo。 + # 使用它提供的图床和idmaps服务(场景:同一个机器人在不同服务器运行,或内网需要发送base64图)。 + # 如果需要发送base64图片,需要设置正确的公网server_dir和开放对应的port \ No newline at end of file diff --git a/handlers/get_group_info.go b/handlers/get_group_info.go index ffa84266..3464a97d 100644 --- a/handlers/get_group_info.go +++ b/handlers/get_group_info.go @@ -58,7 +58,7 @@ func handleGetGroupInfo(client callapi.Client, api openapi.OpenAPI, apiv2 openap //用GroupID给ChannelID赋值,因为我们是把频道虚拟成了群 ChannelID := params.GroupID //读取ini 通过ChannelID取回之前储存的guild_id - value, err := idmap.ReadConfig(ChannelID.(string), "guild_id") + value, err := idmap.ReadConfigv2(ChannelID.(string), "guild_id") if err != nil { log.Printf("handleGetGroupInfo:Error reading config: %v\n", err) return diff --git a/handlers/send_group_msg.go b/handlers/send_group_msg.go index f8d983f1..18115504 100644 --- a/handlers/send_group_msg.go +++ b/handlers/send_group_msg.go @@ -2,13 +2,17 @@ package handlers import ( "context" + "encoding/base64" + "fmt" "log" + "os" "strconv" "time" "github.com/hoshinonyaruko/gensokyo/callapi" "github.com/hoshinonyaruko/gensokyo/echo" "github.com/hoshinonyaruko/gensokyo/idmap" + "github.com/hoshinonyaruko/gensokyo/server" "github.com/tencent-connect/botgo/dto" "github.com/tencent-connect/botgo/openapi" ) @@ -19,7 +23,7 @@ func init() { func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { // 使用 message.Echo 作为key来获取消息类型 - msgType := echo.GetMsgTypeByKey(message.Echo) + msgType := echo.GetMsgTypeByKey(string(message.Echo)) //如果获取不到 就用user_id获取信息类型 if msgType == "" { @@ -37,7 +41,7 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap messageText, foundItems := parseMessageContent(message.Params) // 获取 echo 的值 - echostr := message.Echo + echostr := string(message.Echo) // 使用 echo 获取消息ID messageID := echo.GetMsgIDByKey(echostr) @@ -51,7 +55,7 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap } //通过bolt数据库还原真实的GroupID - originalGroupID, err := idmap.RetrieveRowByID(message.Params.GroupID.(string)) + originalGroupID, err := idmap.RetrieveRowByIDv2(message.Params.GroupID.(string)) if err != nil { log.Printf("Error retrieving original GroupID: %v", err) return @@ -89,18 +93,17 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap log.Printf("Error: Expected RichMediaMessage type for key %s.", key) continue // 跳过这个项,继续下一个 } - - //richMediaMessage.Timestamp = time.Now().Unix() // 设置时间戳 + fmt.Printf("richMediaMessage: %+v\n", richMediaMessage) _, err := apiv2.PostGroupMessage(context.TODO(), message.Params.GroupID.(string), richMediaMessage) if err != nil { - log.Printf("发送 %s 信息失败: %v", key, err) + log.Printf("发送 %s 信息失败_send_group_msg: %v", key, err) } } case "guild": //用GroupID给ChannelID赋值,因为我们是把频道虚拟成了群 message.Params.ChannelID = message.Params.GroupID.(string) //读取ini 通过ChannelID取回之前储存的guild_id - // value, err := idmap.ReadConfig(message.Params.ChannelID, "guild_id") + // value, err := idmap.ReadConfigv2(message.Params.ChannelID, "guild_id") // if err != nil { // log.Printf("Error reading config: %v", err) // return @@ -112,7 +115,7 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap //用group_id还原出channelid 这是虚拟成群的私聊信息 message.Params.ChannelID = message.Params.GroupID.(string) //读取ini 通过ChannelID取回之前储存的guild_id - value, err := idmap.ReadConfig(message.Params.ChannelID, "guild_id") + value, err := idmap.ReadConfigv2(message.Params.ChannelID, "guild_id") if err != nil { log.Printf("Error reading config: %v", err) return @@ -123,7 +126,7 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap //todo message.Params.ChannelID = message.Params.GroupID.(string) //读取ini 通过ChannelID取回之前储存的guild_id - value, err := idmap.ReadConfig(message.Params.ChannelID, "guild_id") + value, err := idmap.ReadConfigv2(message.Params.ChannelID, "guild_id") if err != nil { log.Printf("Error reading config: %v", err) return @@ -137,11 +140,29 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap func generateGroupMessage(id string, foundItems map[string][]string, messageText string) interface{} { if imageURLs, ok := foundItems["local_image"]; ok && len(imageURLs) > 0 { - // 本地发图逻辑 todo 适配base64图片 + // 从本地路径读取图片 + imageData, err := os.ReadFile(imageURLs[0]) + if err != nil { + // 读入文件,如果是本地图,应用端和gensokyo需要在一台电脑 + log.Printf("Error reading the image from path %s: %v", imageURLs[0], err) + return nil + } + + // base64编码 + base64Encoded := base64.StdEncoding.EncodeToString(imageData) + + // 上传base64编码的图片并获取其URL + imageURL, err := server.UploadBase64ImageToServer(base64Encoded) + if err != nil { + log.Printf("Error uploading base64 encoded image: %v", err) + return nil + } + + // 创建RichMediaMessage并返回,当作URL图片处理 return &dto.RichMediaMessage{ EventID: id, FileType: 1, // 1代表图片 - URL: imageURLs[0], + URL: imageURL, Content: "", // 这个字段文档没有了 SrvSendMsg: true, } @@ -149,13 +170,39 @@ func generateGroupMessage(id string, foundItems map[string][]string, messageText // 发链接图片 return &dto.RichMediaMessage{ EventID: id, - FileType: 1, // 1代表图片 - URL: "http://" + imageURLs[0], - Content: "", // 这个字段文档没有了 + FileType: 1, // 1代表图片 + URL: "http://" + imageURLs[0], //url在base64时候被截断了,在这里补全 + Content: "", // 这个字段文档没有了 SrvSendMsg: true, } } else if voiceURLs, ok := foundItems["base64_record"]; ok && len(voiceURLs) > 0 { // 目前不支持发语音 todo 适配base64 slik + } else if base64_image, ok := foundItems["base64_image"]; ok && len(base64_image) > 0 { + // todo 适配base64图片 + //因为QQ群没有 form方式上传,所以在gensokyo内置了图床,需公网,或以lotus方式连接位于公网的gensokyo + //要正确的开放对应的端口和设置正确的ip地址在config,这对于一般用户是有一些难度的 + if base64Image, ok := foundItems["base64_image"]; ok && len(base64Image) > 0 { + // 解码base64图片数据 + fileImageData, err := base64.StdEncoding.DecodeString(base64Image[0]) + if err != nil { + log.Printf("failed to decode base64 image: %v", err) + return nil + } + // 将解码的图片数据转换回base64格式并上传 + imageURL, err := server.UploadBase64ImageToServer(base64.StdEncoding.EncodeToString(fileImageData)) + if err != nil { + log.Printf("failed to upload base64 image: %v", err) + return nil + } + // 创建RichMediaMessage并返回 + return &dto.RichMediaMessage{ + EventID: id, + FileType: 1, // 1代表图片 + URL: imageURL, + Content: "", // 这个字段文档没有了 + SrvSendMsg: true, + } + } } else { // 返回文本信息 return &dto.MessageToCreate{ diff --git a/handlers/send_guild_channel_msg.go b/handlers/send_guild_channel_msg.go index 834cf803..99085d24 100644 --- a/handlers/send_guild_channel_msg.go +++ b/handlers/send_guild_channel_msg.go @@ -21,7 +21,7 @@ func init() { func handleSendGuildChannelMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { // 使用 message.Echo 作为key来获取消息类型 - msgType := echo.GetMsgTypeByKey(message.Echo) + msgType := echo.GetMsgTypeByKey(string(message.Echo)) //如果获取不到 就用user_id获取信息类型 if msgType == "" { @@ -46,7 +46,7 @@ func handleSendGuildChannelMsg(client callapi.Client, api openapi.OpenAPI, apiv2 channelID := params.ChannelID // 获取 echo 的值 - echostr := message.Echo + echostr := string(message.Echo) //messageType := echo.GetMsgTypeByKey(echostr) messageID := echo.GetMsgIDByKey(echostr) diff --git a/handlers/send_msg.go b/handlers/send_msg.go index 0b63c8e7..4c4caf01 100644 --- a/handlers/send_msg.go +++ b/handlers/send_msg.go @@ -2,14 +2,17 @@ package handlers import ( "context" + "encoding/base64" "fmt" "log" + "os" "strconv" "time" "github.com/hoshinonyaruko/gensokyo/callapi" "github.com/hoshinonyaruko/gensokyo/echo" "github.com/hoshinonyaruko/gensokyo/idmap" + "github.com/hoshinonyaruko/gensokyo/server" "github.com/tencent-connect/botgo/dto" "github.com/tencent-connect/botgo/openapi" ) @@ -20,7 +23,7 @@ func init() { func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { // 使用 message.Echo 作为key来获取消息类型 - msgType := echo.GetMsgTypeByKey(message.Echo) + msgType := echo.GetMsgTypeByKey(string(message.Echo)) //如果获取不到 就用group_id获取信息类型 if msgType == "" { @@ -43,7 +46,7 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope messageText, foundItems := parseMessageContent(message.Params) // 获取 echo 的值 - echostr := message.Echo + echostr := string(message.Echo) // 使用 echo 获取消息ID messageID := echo.GetMsgIDByKey(echostr) @@ -57,7 +60,7 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope } //通过bolt数据库还原真实的GroupID - originalGroupID, err := idmap.RetrieveRowByID(message.Params.GroupID.(string)) + originalGroupID, err := idmap.RetrieveRowByIDv2(message.Params.GroupID.(string)) if err != nil { log.Printf("Error retrieving original GroupID: %v", err) return @@ -66,7 +69,7 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope // 优先发送文本信息 if messageText != "" { - groupReply := generateGroupMessage(messageID, nil, messageText) + groupReply := generateMessage(messageID, nil, messageText) // 进行类型断言 groupMessage, ok := groupReply.(*dto.MessageToCreate) @@ -87,7 +90,7 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope var singleItem = make(map[string][]string) singleItem[key] = urls - groupReply := generateGroupMessage(messageID, singleItem, "") + groupReply := generateMessage(messageID, singleItem, "") // 进行类型断言 richMediaMessage, ok := groupReply.(*dto.RichMediaMessage) @@ -96,17 +99,17 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope continue // 跳过这个项,继续下一个 } - //richMediaMessage.Timestamp = time.Now().Unix() // 设置时间戳 + fmt.Printf("richMediaMessage: %+v\n", richMediaMessage) _, err := apiv2.PostGroupMessage(context.TODO(), message.Params.GroupID.(string), richMediaMessage) if err != nil { - log.Printf("发送 %s 信息失败: %v", key, err) + log.Printf("发送 %s 信息失败_send_msg: %v", key, err) } } case "guild": //用GroupID给ChannelID赋值,因为我们是把频道虚拟成了群 message.Params.ChannelID = message.Params.GroupID.(string) //读取ini 通过ChannelID取回之前储存的guild_id - // value, err := idmap.ReadConfig(message.Params.ChannelID, "guild_id") + // value, err := idmap.ReadConfigv2(message.Params.ChannelID, "guild_id") // if err != nil { // log.Printf("Error reading config: %v", err) // return @@ -126,7 +129,7 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope if channelID, ok := message.Params.GroupID.(string); ok && channelID != "" { channelIDPtr = &channelID // 读取bolt数据库 通过ChannelID取回之前储存的guild_id - if value, err := idmap.ReadConfig(channelID, "guild_id"); err == nil && value != "" { + if value, err := idmap.ReadConfigv2(channelID, "guild_id"); err == nil && value != "" { GuildidPtr = &value } else { log.Printf("Error reading config: %v", err) @@ -144,7 +147,7 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope //todo message.Params.ChannelID = message.Params.GroupID.(string) //读取ini 通过ChannelID取回之前储存的guild_id - value, err := idmap.ReadConfig(message.Params.ChannelID, "guild_id") + value, err := idmap.ReadConfigv2(message.Params.ChannelID, "guild_id") if err != nil { log.Printf("Error reading config: %v", err) return @@ -158,11 +161,29 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope func generateMessage(id string, foundItems map[string][]string, messageText string) interface{} { if imageURLs, ok := foundItems["local_image"]; ok && len(imageURLs) > 0 { - // 本地发图逻辑 todo 适配base64图片 + // 从本地路径读取图片 + imageData, err := os.ReadFile(imageURLs[0]) + if err != nil { + // 读入文件,如果是本地图,应用端和gensokyo需要在一台电脑 + log.Printf("Error reading the image from path %s: %v", imageURLs[0], err) + return nil + } + + // base64编码 + base64Encoded := base64.StdEncoding.EncodeToString(imageData) + + // 上传base64编码的图片并获取其URL + imageURL, err := server.UploadBase64ImageToServer(base64Encoded) + if err != nil { + log.Printf("Error uploading base64 encoded image: %v", err) + return nil + } + + // 创建RichMediaMessage并返回,当作URL图片处理 return &dto.RichMediaMessage{ EventID: id, FileType: 1, // 1代表图片 - URL: imageURLs[0], + URL: imageURL, Content: "", // 这个字段文档没有了 SrvSendMsg: true, } @@ -176,7 +197,31 @@ func generateMessage(id string, foundItems map[string][]string, messageText stri SrvSendMsg: true, } } else if base64_image, ok := foundItems["base64_image"]; ok && len(base64_image) > 0 { - // 目前不支持发语音 todo 适配base64 slik + // todo 适配base64图片 + //因为QQ群没有 form方式上传,所以在gensokyo内置了图床,需公网,或以lotus方式连接位于公网的gensokyo + //要正确的开放对应的端口和设置正确的ip地址在config,这对于一般用户是有一些难度的 + if base64Image, ok := foundItems["base64_image"]; ok && len(base64Image) > 0 { + // 解码base64图片数据 + fileImageData, err := base64.StdEncoding.DecodeString(base64Image[0]) + if err != nil { + log.Printf("failed to decode base64 image: %v", err) + return nil + } + // 将解码的图片数据转换回base64格式并上传 + imageURL, err := server.UploadBase64ImageToServer(base64.StdEncoding.EncodeToString(fileImageData)) + if err != nil { + log.Printf("failed to upload base64 image: %v", err) + return nil + } + // 创建RichMediaMessage并返回 + return &dto.RichMediaMessage{ + EventID: id, + FileType: 1, // 1代表图片 + URL: imageURL, + Content: "", // 这个字段文档没有了 + SrvSendMsg: true, + } + } } else if voiceURLs, ok := foundItems["base64_record"]; ok && len(voiceURLs) > 0 { // 目前不支持发语音 todo 适配base64 slik } else { diff --git a/handlers/send_private_msg.go b/handlers/send_private_msg.go index 6c3e3f83..2d52727c 100644 --- a/handlers/send_private_msg.go +++ b/handlers/send_private_msg.go @@ -21,7 +21,7 @@ func init() { func handleSendPrivateMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { // 使用 message.Echo 作为key来获取消息类型 - msgType := echo.GetMsgTypeByKey(message.Echo) + msgType := echo.GetMsgTypeByKey(string(message.Echo)) switch msgType { case "group_private": @@ -29,7 +29,7 @@ func handleSendPrivateMsg(client callapi.Client, api openapi.OpenAPI, apiv2 open messageText, foundItems := parseMessageContent(message.Params) // 获取 echo 的值 - echostr := message.Echo + echostr := string(message.Echo) // 使用 echo 获取消息ID messageID := echo.GetMsgIDByKey(echostr) @@ -38,7 +38,7 @@ func handleSendPrivateMsg(client callapi.Client, api openapi.OpenAPI, apiv2 open log.Println("foundItems:", foundItems) //通过bolt数据库还原真实的GroupID - originalGroupID, err := idmap.RetrieveRowByID(message.Params.GroupID.(string)) + originalGroupID, err := idmap.RetrieveRowByIDv2(message.Params.GroupID.(string)) if err != nil { log.Printf("Error retrieving original GroupID: %v", err) return @@ -144,7 +144,7 @@ func handleSendGuildChannelPrivateMsg(client callapi.Client, api openapi.OpenAPI } // 获取 echo 的值 - echostr := message.Echo + echostr := string(message.Echo) messageID := echo.GetMsgIDByKey(echostr) log.Println("私聊信息对应的message_id:", messageID) log.Println("私聊信息messageText:", messageText) @@ -220,19 +220,19 @@ func getGuildIDFromMessage(message callapi.ActionMessage) (string, string, error return "", "", fmt.Errorf("unexpected type for UserID: %T", v) // 使用%T来打印具体的类型 } - // 使用RetrieveRowByID还原真实的UserID - realUserID, err := idmap.RetrieveRowByID(userID) + // 使用RetrieveRowByIDv2还原真实的UserID + realUserID, err := idmap.RetrieveRowByIDv2(userID) if err != nil { return "", "", fmt.Errorf("error retrieving real UserID: %v", err) } // 使用realUserID作为sectionName从数据库中获取channel_id - channelID, err := idmap.ReadConfig(realUserID, "channel_id") + channelID, err := idmap.ReadConfigv2(realUserID, "channel_id") if err != nil { return "", "", fmt.Errorf("error reading channel_id: %v", err) } // 使用channelID作为sectionName从数据库中获取guild_id - guildID, err := idmap.ReadConfig(channelID, "guild_id") + guildID, err := idmap.ReadConfigv2(channelID, "guild_id") if err != nil { return "", "", fmt.Errorf("error reading guild_id: %v", err) } diff --git a/idmap/service.go b/idmap/service.go index 32709074..554b9a7a 100644 --- a/idmap/service.go +++ b/idmap/service.go @@ -2,11 +2,16 @@ package idmap import ( "encoding/binary" + "encoding/json" "errors" "fmt" + "io" "log" + "net/http" + "net/url" "github.com/boltdb/bolt" + "github.com/hoshinonyaruko/gensokyo/config" ) const ( @@ -38,7 +43,7 @@ func CloseDB() { } // 根据a储存b -func StoreID(id string) (int64, error) { +func StoreIDv2(id string) (int64, error) { var newRow int64 err := db.Update(func(tx *bolt.Tx) error { @@ -74,8 +79,44 @@ func StoreID(id string) (int64, error) { return newRow, err } +// StoreIDv2v2 根据a储存b +func StoreIDv2v2(id string) (int64, error) { + if config.GetLotusValue() { + // 使用网络请求方式 + serverDir := config.GetServer_dir() + portValue := config.GetPortValue() + + // 构建请求URL + url := fmt.Sprintf("http://%s:%s/getid?type=1&id=%s", serverDir, portValue, id) + resp, err := http.Get(url) + if err != nil { + return 0, fmt.Errorf("failed to send request: %v", err) + } + defer resp.Body.Close() + + // 解析响应 + var response map[string]interface{} + if err := json.NewDecoder(resp.Body).Decode(&response); err != nil { + return 0, fmt.Errorf("failed to decode response: %v", err) + } + if resp.StatusCode != http.StatusOK { + return 0, fmt.Errorf("error response from server: %s", response["error"]) + } + + rowValue, ok := response["row"].(float64) + if !ok { + return 0, fmt.Errorf("invalid response format") + } + + return int64(rowValue), nil + } + + // 如果lotus为假,就保持原来的store的方法 + return StoreIDv2(id) +} + // 根据b得到a -func RetrieveRowByID(rowid string) (string, error) { +func RetrieveRowByIDv2(rowid string) (string, error) { var id string err := db.View(func(tx *bolt.Tx) error { b := tx.Bucket([]byte(BucketName)) @@ -93,8 +134,44 @@ func RetrieveRowByID(rowid string) (string, error) { return id, err } +// RetrieveRowByIDv2v2 根据b得到a +func RetrieveRowByIDv2v2(rowid string) (string, error) { + if config.GetLotusValue() { + // 使用网络请求方式 + serverDir := config.GetServer_dir() + portValue := config.GetPortValue() + + // 构建请求URL + url := fmt.Sprintf("http://%s:%s/getid?type=2&id=%s", serverDir, portValue, rowid) + resp, err := http.Get(url) + if err != nil { + return "", fmt.Errorf("failed to send request: %v", err) + } + defer resp.Body.Close() + + // 解析响应 + var response map[string]interface{} + if err := json.NewDecoder(resp.Body).Decode(&response); err != nil { + return "", fmt.Errorf("failed to decode response: %v", err) + } + if resp.StatusCode != http.StatusOK { + return "", fmt.Errorf("error response from server: %s", response["error"]) + } + + idValue, ok := response["id"].(string) + if !ok { + return "", fmt.Errorf("invalid response format") + } + + return idValue, nil + } + + // 如果lotus为假,就保持原来的RetrieveRowByIDv2的方法 + return RetrieveRowByIDv2(rowid) +} + // 根据a 以b为类别 储存c -func WriteConfig(sectionName, keyName, value string) error { +func WriteConfigv2(sectionName, keyName, value string) error { return db.Update(func(tx *bolt.Tx) error { b, err := tx.CreateBucketIfNotExists([]byte(ConfigBucket)) if err != nil { @@ -106,8 +183,41 @@ func WriteConfig(sectionName, keyName, value string) error { }) } +// WriteConfigv2v2 根据a以b为类别储存c +func WriteConfigv2v2(sectionName, keyName, value string) error { + if config.GetLotusValue() { + // 使用网络请求方式 + serverDir := config.GetServer_dir() + portValue := config.GetPortValue() + + // 构建请求URL和参数 + baseURL := fmt.Sprintf("http://%s:%s/getid", serverDir, portValue) + params := url.Values{} + params.Add("type", "3") + params.Add("id", sectionName) + params.Add("subtype", keyName) + params.Add("value", value) + url := baseURL + "?" + params.Encode() + + resp, err := http.Get(url) + if err != nil { + return fmt.Errorf("failed to send request: %v", err) + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("error response from server: %s", resp.Status) + } + + return nil + } + + // 如果lotus为假,则使用原始方法在本地写入配置 + return WriteConfigv2(sectionName, keyName, value) +} + // 根据a和b取出c -func ReadConfig(sectionName, keyName string) (string, error) { +func ReadConfigv2(sectionName, keyName string) (string, error) { var result string err := db.View(func(tx *bolt.Tx) error { b := tx.Bucket([]byte(ConfigBucket)) @@ -128,6 +238,52 @@ func ReadConfig(sectionName, keyName string) (string, error) { return result, err } +// ReadConfigv2v2 根据a和b取出c +func ReadConfigv2v2(sectionName, keyName string) (string, error) { + if config.GetLotusValue() { + // 使用网络请求方式 + serverDir := config.GetServer_dir() + portValue := config.GetPortValue() + + // 构建请求URL和参数 + baseURL := fmt.Sprintf("http://%s:%s/getid", serverDir, portValue) + params := url.Values{} + params.Add("type", "4") + params.Add("id", sectionName) + params.Add("subtype", keyName) + url := baseURL + "?" + params.Encode() + + resp, err := http.Get(url) + if err != nil { + return "", fmt.Errorf("failed to send request: %v", err) + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return "", fmt.Errorf("error response from server: %s", resp.Status) + } + + body, err := io.ReadAll(resp.Body) + if err != nil { + return "", fmt.Errorf("failed to read response body: %v", err) + } + + var responseMap map[string]interface{} + if err := json.Unmarshal(body, &responseMap); err != nil { + return "", fmt.Errorf("failed to unmarshal response: %v", err) + } + + if value, ok := responseMap["value"]; ok { + return fmt.Sprintf("%v", value), nil + } + + return "", fmt.Errorf("value not found in response") + } + + // 如果lotus为假,则使用原始方法在本地读取配置 + return ReadConfigv2(sectionName, keyName) +} + // 灵感,ini配置文件 func joinSectionAndKey(sectionName, keyName string) []byte { return []byte(sectionName + ":" + keyName) diff --git a/main.go b/main.go index 55628e9f..6b5938e3 100644 --- a/main.go +++ b/main.go @@ -5,7 +5,6 @@ import ( "errors" "fmt" "log" - "net/http" "os" "os/signal" "strconv" @@ -16,9 +15,11 @@ import ( "github.com/hoshinonyaruko/gensokyo/config" "github.com/hoshinonyaruko/gensokyo/handlers" "github.com/hoshinonyaruko/gensokyo/idmap" + "github.com/hoshinonyaruko/gensokyo/server" "github.com/hoshinonyaruko/gensokyo/wsclient" "github.com/gin-gonic/gin" + "github.com/sqweek/dialog" "github.com/tencent-connect/botgo" "github.com/tencent-connect/botgo/dto" "github.com/tencent-connect/botgo/event" @@ -41,6 +42,19 @@ func NewProcessor(api openapi.OpenAPI, apiv2 openapi.OpenAPI, settings *config.S } func main() { + if _, err := os.Stat("config.yml"); os.IsNotExist(err) { + // 如果config.yml不存在 + err = os.WriteFile("config.yml", []byte(configTemplate), 0644) + if err != nil { + fmt.Println("Error writing config.yml:", err) + return + } + + dialog.Message("%s", "请配置config.yml然后再次运行.").Title("配置提示").Info() + os.Exit(0) + } + + // 主逻辑 // 加载配置 conf, err := config.LoadConfig("config.yml") if err != nil { @@ -73,16 +87,16 @@ func main() { apiV2 := botgo.NewOpenAPI(token).WithTimeout(3 * time.Second) // 执行API请求 显示机器人信息 - me, err := api.Me(ctx) // Adjusted to pass only the context - if err != nil { - fmt.Printf("Error fetching bot details: %v\n", err) - return - } - fmt.Printf("Bot details: %+v\n", me) + // me, err := api.Me(ctx) // Adjusted to pass only the context + // if err != nil { + // fmt.Printf("Error fetching bot details: %v\n", err) + // return + // } + // fmt.Printf("Bot details: %+v\n", me) //初始化handlers - handlers.BotID = me.ID - //handlers.BotID = "1234" + //handlers.BotID = me.ID + handlers.BotID = "1234" handlers.AppID = fmt.Sprintf("%d", conf.Settings.AppID) // 获取 websocket 信息 这里用哪一个api获取就是用哪一个api去连接ws @@ -151,9 +165,17 @@ func main() { idmap.InitializeDB() defer idmap.CloseDB() - r := gin.Default() - r.GET("/getid", getIDHandler) - r.Run(":15817") + //图片上传 调用次数限制 + rateLimiter := server.NewRateLimiter() + + //如果连接到其他gensokyo,则不需要启动服务器 + if !conf.Settings.Lotus { + r := gin.Default() + r.GET("/getid", server.GetIDHandler) + r.POST("/uploadpic", server.UploadBase64ImageHandler(rateLimiter)) + r.Static("/channel_temp", "./channel_temp") + r.Run("0.0.0.0:" + conf.Settings.Port) // 注意,这里我更改了端口为你提供的Port,并监听0.0.0.0地址 + } // 使用通道来等待信号 sigCh := make(chan os.Signal, 1) @@ -283,58 +305,3 @@ func getHandlerByName(handlerName string) (interface{}, bool) { return nil, false } } - -func getIDHandler(c *gin.Context) { - idOrRow := c.Query("id") - typeVal, err := strconv.Atoi(c.Query("type")) - - if err != nil || (typeVal != 1 && typeVal != 2) { - c.JSON(http.StatusBadRequest, gin.H{"error": "invalid type"}) - return - } - - switch typeVal { - case 1: - newRow, err := idmap.StoreID(idOrRow) - if err != nil { - c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) - return - } - c.JSON(http.StatusOK, gin.H{"row": newRow}) - - case 2: - id, err := idmap.RetrieveRowByID(idOrRow) - if err == idmap.ErrKeyNotFound { - c.JSON(http.StatusNotFound, gin.H{"error": "ID not found"}) - return - } else if err != nil { - c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) - return - } - c.JSON(http.StatusOK, gin.H{"id": id}) - - case 3: - // 存储 - section := c.Query("id") - subtype := c.Query("subtype") - value := c.Query("value") - err := idmap.WriteConfig(section, subtype, value) - if err != nil { - c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) - return - } - c.JSON(http.StatusOK, gin.H{"status": "success"}) - - case 4: - // 获取值 - section := c.Query("id") - subtype := c.Query("subtype") - value, err := idmap.ReadConfig(section, subtype) - if err != nil { - c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) - return - } - c.JSON(http.StatusOK, gin.H{"value": value}) - } - -} diff --git a/readme.md b/readme.md index 5087bd86..85b391ef 100644 --- a/readme.md +++ b/readme.md @@ -49,7 +49,9 @@ gensokyo兼容 [OneBot-v11](https://github.com/botuniverse/onebot-11) ,并在 实现插件开发和用户开发者无需重新开发,复用过往生态的插件和使用体验. -目前还在开发中..... +目前还处于早期阶段.....交流群:196173384 + +欢迎测试,询问任何有关使用的问题,有问必答,有难必帮~ ### 接口 diff --git a/server/getIDHandler.go b/server/getIDHandler.go new file mode 100644 index 00000000..bfe621c5 --- /dev/null +++ b/server/getIDHandler.go @@ -0,0 +1,64 @@ +package server + +import ( + "net/http" + "strconv" + + "github.com/gin-gonic/gin" + "github.com/hoshinonyaruko/gensokyo/idmap" +) + +func GetIDHandler(c *gin.Context) { + idOrRow := c.Query("id") + typeVal, err := strconv.Atoi(c.Query("type")) + + if err != nil || (typeVal != 1 && typeVal != 2) { + c.JSON(http.StatusBadRequest, gin.H{"error": "invalid type"}) + return + } + + switch typeVal { + case 1: + newRow, err := idmap.StoreIDv2(idOrRow) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + c.JSON(http.StatusOK, gin.H{"row": newRow}) + + case 2: + id, err := idmap.RetrieveRowByIDv2(idOrRow) + if err == idmap.ErrKeyNotFound { + c.JSON(http.StatusNotFound, gin.H{"error": "ID not found"}) + return + } else if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + c.JSON(http.StatusOK, gin.H{"id": id}) + + case 3: + // 存储 + section := c.Query("id") + subtype := c.Query("subtype") + value := c.Query("value") + err := idmap.WriteConfigv2(section, subtype, value) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + c.JSON(http.StatusOK, gin.H{"status": "success"}) + + case 4: + // 获取值 + section := c.Query("id") + subtype := c.Query("subtype") + value, err := idmap.ReadConfigv2(section, subtype) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + c.JSON(http.StatusOK, gin.H{"value": value}) + } + +} diff --git a/server/uploadpic.go b/server/uploadpic.go new file mode 100644 index 00000000..78c419d0 --- /dev/null +++ b/server/uploadpic.go @@ -0,0 +1,238 @@ +package server + +import ( + "bytes" + "crypto/md5" + "crypto/rand" + "encoding/base64" + "encoding/hex" + "encoding/json" + "errors" + "fmt" + "image" + _ "image/gif" + _ "image/jpeg" + _ "image/png" + "io/ioutil" + "net" + "net/http" + "net/url" + "os" + "strings" + "time" + + "github.com/gin-gonic/gin" + "github.com/hoshinonyaruko/gensokyo/config" +) + +const ( + MaximumImageSize = 10 * 1024 * 1024 + AllowedUploadsPerMinute = 100 + MaxRequests = 30 + RequestInterval = time.Minute +) + +type RateLimiter struct { + Counts map[string][]time.Time +} + +// 频率限制器 +func NewRateLimiter() *RateLimiter { + return &RateLimiter{ + Counts: make(map[string][]time.Time), + } +} + +// 网页后端,图床逻辑,基于gin和www静态文件的简易图床 +func UploadBase64ImageHandler(rateLimiter *RateLimiter) gin.HandlerFunc { + return func(c *gin.Context) { + ipAddress := c.ClientIP() + if !rateLimiter.CheckAndUpdateRateLimit(ipAddress) { + c.JSON(http.StatusTooManyRequests, gin.H{"error": "rate limit exceeded"}) + return + } + + base64Image := c.PostForm("base64Image") + // Print the length of the received base64 data + fmt.Println("Received base64 data length:", len(base64Image), "characters") + + imageBytes, err := base64.StdEncoding.DecodeString(base64Image) + if err != nil { + fmt.Println("Error while decoding base64:", err) // Print error while decoding + c.JSON(http.StatusBadRequest, gin.H{"error": "invalid base64 data"}) + return + } + + imageFormat, err := getImageFormat(imageBytes) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "undefined picture format1"}) + return + } + + fileExt := getFileExtensionFromImageFormat(imageFormat) + if fileExt == "" { + c.JSON(http.StatusBadRequest, gin.H{"error": "unsupported image format2"}) + return + } + + fileName := generateRandomMd5() + "." + fileExt + directoryPath := "./channel_temp/" + savePath := directoryPath + fileName + + // Create the directory if it doesn't exist + err = os.MkdirAll(directoryPath, 0755) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "error creating directory"}) + return + } + + err = os.WriteFile(savePath, imageBytes, 0644) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "error saving file"}) + return + } + + serverAddress := config.GetServer_dir() + serverPort := config.GetPortValue() + if serverAddress == "" { + // Handle the case where the server address is not configured + c.JSON(http.StatusInternalServerError, gin.H{"error": "server address is not configured"}) + return + } + + imageURL := fmt.Sprintf("http://%s:%s/channel_temp/%s", serverAddress, serverPort, fileName) + c.JSON(http.StatusOK, gin.H{"url": imageURL}) + } +} + +// 检查是否超过调用频率限制 +// 默认1分钟30次 todo 允许用户自行在config编辑限制次数 +func (rl *RateLimiter) CheckAndUpdateRateLimit(ipAddress string) bool { + now := time.Now() + rl.Counts[ipAddress] = append(rl.Counts[ipAddress], now) + + // Remove expired entries + for len(rl.Counts[ipAddress]) > 0 && now.Sub(rl.Counts[ipAddress][0]) > RequestInterval { + rl.Counts[ipAddress] = rl.Counts[ipAddress][1:] + } + + return len(rl.Counts[ipAddress]) <= MaxRequests +} + +// 获取图片类型 +func getImageFormat(data []byte) (format string, err error) { + // Print the size of the data to check if it's being read correctly + fmt.Println("Received data size:", len(data), "bytes") + + _, format, err = image.DecodeConfig(bytes.NewReader(data)) + if err != nil { + // Print additional error information + fmt.Println("Error while trying to decode image config:", err) + return "", fmt.Errorf("error decoding image config: %w", err) + } + + // Print the detected format + fmt.Println("Detected image format:", format) + + if format == "" { + return "", errors.New("undefined picture format") + } + return format, nil +} + +// 判断并返回图片类型 +func getFileExtensionFromImageFormat(format string) string { + switch format { + case "jpeg": + return "jpg" + case "gif": + return "gif" + case "png": + return "png" + default: + return "" + } +} + +// 生成随机md5图片名,防止碰撞 +func generateRandomMd5() string { + randomBytes := make([]byte, 16) + _, err := rand.Read(randomBytes) + if err != nil { + return "" + } + + md5Hash := md5.Sum(randomBytes) + return hex.EncodeToString(md5Hash[:]) +} + +// 将base64图片通过lotus转换成url +func UploadBase64ImageToServer(base64Image string) (string, error) { + if config.GetLotusValue() { + serverDir := config.GetServer_dir() + serverPort := config.GetPortValue() + url := fmt.Sprintf("http://%s:%s/uploadpic", serverDir, serverPort) + + resp, err := postImageToServer(base64Image, url) + if err != nil { + return "", err + } + return resp, nil + } + + serverDir := config.GetServer_dir() + if isPublicAddress(serverDir) { + url := fmt.Sprintf("http://127.0.0.1:%s/uploadpic", config.GetPortValue()) + + resp, err := postImageToServer(base64Image, url) + if err != nil { + return "", err + } + return resp, nil + } + return "", errors.New("local server uses a private address; image upload failed") +} + +// 请求图床api(图床就是lolus为false的gensokyo) +func postImageToServer(base64Image, targetURL string) (string, error) { + data := url.Values{} + data.Set("base64Image", base64Image) // 修改字段名以与服务器匹配 + + resp, err := http.PostForm(targetURL, data) + if err != nil { + return "", fmt.Errorf("failed to send request: %v", err) + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return "", fmt.Errorf("error response from server: %s", resp.Status) + } + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return "", fmt.Errorf("failed to read response body: %v", err) + } + + var responseMap map[string]interface{} + if err := json.Unmarshal(body, &responseMap); err != nil { + return "", fmt.Errorf("failed to unmarshal response: %v", err) + } + + if value, ok := responseMap["url"]; ok { + return fmt.Sprintf("%v", value), nil + } + + return "", fmt.Errorf("URL not found in response") +} + +// 判断是否公网ip 填写域名也会被认为是公网,但需要用户自己确保域名正确解析到gensokyo所在的ip地址 +func isPublicAddress(addr string) bool { + if strings.Contains(addr, "localhost") || strings.HasPrefix(addr, "127.") || strings.HasPrefix(addr, "192.168.") { + return false + } + if net.ParseIP(addr) != nil { + return true + } + // If it's not a recognized IP address format, consider it a domain name (public). + return true +} diff --git a/wsclient/ws.go b/wsclient/ws.go index 8e8207dd..6c01fd48 100644 --- a/wsclient/ws.go +++ b/wsclient/ws.go @@ -64,7 +64,7 @@ func (c *WebSocketClient) recvMessage(msg []byte) { return } - fmt.Println("Received from onebotv11:", truncateMessage(message, 200)) + fmt.Println("Received from onebotv11:", truncateMessage(message, 500)) // 调用callapi callapi.CallAPIFromDict(c, c.api, c.apiv2, message) } @@ -122,9 +122,10 @@ func NewWebSocketClient(urlStr string, botID string, api openapi.OpenAPI, apiv2 // Retry mechanism for { + fmt.Println("Dialing URL:", urlStr) conn, _, err = dialer.Dial(urlStr, headers) if err != nil { - fmt.Printf("Failed to connect to WebSocket: %v, retrying in 5 seconds...\n", err) + fmt.Printf("Failed to connect to WebSocket[%v]: %v, retrying in 5 seconds...\n", urlStr, err) time.Sleep(5 * time.Second) // sleep for 5 seconds before retrying } else { fmt.Printf("成功连接到 %s.\n", urlStr) // 输出连接成功提示 From 86698c6ca667d2f13a44efd7013e6b97a05abc67 Mon Sep 17 00:00:00 2001 From: cosmo Date: Thu, 26 Oct 2023 12:36:37 +0800 Subject: [PATCH 07/36] trss support --- Processor/ProcessC2CMessage.go | 157 +++++++++++++++++++++++ Processor/ProcessChannelDirectMessage.go | 24 +++- Processor/ProcessGroupMessage.go | 13 +- Processor/ProcessGuildATMessage.go | 28 ++-- Processor/ProcessGuildNormalMessage.go | 28 ++-- Processor/Processor.go | 47 +++---- botgo/token/authtoken.go | 98 +++++++------- botgo/token/token.go | 14 +- callapi/callapi.go | 24 +++- config/config.go | 22 ++++ config_template.go | 2 +- config_template.yml | 2 +- handlers/get_friend_list.go | 63 +++++++++ handlers/get_group_info.go | 2 +- handlers/get_group_list.go | 154 ++++++++++++++++++++++ handlers/get_group_member_list.go | 96 ++++++++++++++ handlers/get_guild_channel_list.go | 41 ++++++ handlers/get_guild_list.go | 58 +++++++++ handlers/get_guild_service_profile.go | 51 ++++++++ handlers/get_login_info.go | 59 +++++++++ handlers/get_online_clients.go | 51 ++++++++ handlers/get_version_info.go | 73 +++++++++++ handlers/message_parser.go | 76 +++++++++++ handlers/send_group_msg.go | 22 +--- handlers/send_guild_channel_msg.go | 4 +- handlers/send_msg.go | 65 ++++++++-- handlers/send_private_msg.go | 38 +++--- handlers/set_group_ban.go | 65 ++++++++++ handlers/set_group_whole_ban.go | 60 +++++++++ idmap/service.go | 32 ++--- main.go | 23 ++-- wsclient/ws.go | 15 ++- 32 files changed, 1302 insertions(+), 205 deletions(-) create mode 100644 Processor/ProcessC2CMessage.go create mode 100644 handlers/get_friend_list.go create mode 100644 handlers/get_group_list.go create mode 100644 handlers/get_group_member_list.go create mode 100644 handlers/get_guild_channel_list.go create mode 100644 handlers/get_guild_list.go create mode 100644 handlers/get_guild_service_profile.go create mode 100644 handlers/get_login_info.go create mode 100644 handlers/get_online_clients.go create mode 100644 handlers/get_version_info.go create mode 100644 handlers/set_group_ban.go create mode 100644 handlers/set_group_whole_ban.go diff --git a/Processor/ProcessC2CMessage.go b/Processor/ProcessC2CMessage.go new file mode 100644 index 00000000..72eeda07 --- /dev/null +++ b/Processor/ProcessC2CMessage.go @@ -0,0 +1,157 @@ +// 处理收到的信息事件 +package Processor + +import ( + "fmt" + "log" + "strconv" + "time" + + "github.com/hoshinonyaruko/gensokyo/config" + "github.com/hoshinonyaruko/gensokyo/echo" + "github.com/hoshinonyaruko/gensokyo/handlers" + "github.com/hoshinonyaruko/gensokyo/idmap" + "github.com/tencent-connect/botgo/dto" + "github.com/tencent-connect/botgo/websocket/client" +) + +// ProcessC2CMessage 处理C2C消息 群私聊 +func (p *Processor) ProcessC2CMessage(data *dto.WSC2CMessageData) error { + // 打印data结构体 + PrintStructWithFieldNames(data) + + // 从私信中提取必要的信息 这是测试回复需要用到 + //recipientID := data.Author.ID + //ChannelID := data.ChannelID + //sourece是源头频道 + //GuildID := data.GuildID + + //获取当前的s值 当前ws连接所收到的信息条数 + s := client.GetGlobalS() + if !p.Settings.GlobalPrivateToChannel { + // 直接转换成ob11私信 + + //转换appidstring + AppIDString := strconv.FormatUint(p.Settings.AppID, 10) + echostr := AppIDString + "_" + strconv.FormatInt(s, 10) + + //将真实id转为int userid64 + userid64, err := idmap.StoreIDv2(data.Author.ID) + if err != nil { + log.Fatalf("Error storing ID: %v", err) + } + + //收到私聊信息调用的具体还原步骤 + //1,idmap还原真实userid, + //发信息使用的是userid + + messageID64, err := idmap.StoreIDv2(data.ID) + if err != nil { + log.Fatalf("Error storing ID: %v", err) + } + messageID := int(messageID64) + messageText := data.Content + // 如果在Array模式下, 则处理Message为Segment格式 + var segmentedMessages interface{} = messageText + if config.GetArrayValue() { + segmentedMessages = handlers.ConvertToSegmentedMessage(data) + } + privateMsg := OnebotPrivateMessage{ + RawMessage: messageText, + Message: segmentedMessages, + MessageID: messageID, + MessageType: "private", + PostType: "message", + SelfID: int64(p.Settings.AppID), + UserID: userid64, + Sender: PrivateSender{ + Nickname: "", //这个不支持,但加机器人好友,会收到一个事件,可以对应储存获取,用idmaps可以做到. + UserID: userid64, + }, + SubType: "friend", + Time: time.Now().Unix(), + Avatar: "", //todo 同上 + Echo: echostr, + } + + // 将当前s和appid和message进行映射 + echo.AddMsgID(AppIDString, s, data.ID) + echo.AddMsgType(AppIDString, s, "group_private") + //其实不需要用AppIDString,因为gensokyo是单机器人框架 + //可以试着开发一个,会很棒的 + echo.AddMsgID(AppIDString, userid64, data.ID) + echo.AddMsgType(AppIDString, userid64, "group_private") + //储存当前群或频道号的类型 私信不需要 + //idmap.WriteConfigv2(data.ChannelID, "type", "group_private") + + // 调试 + PrintStructWithFieldNames(privateMsg) + + // Convert OnebotGroupMessage to map and send + privateMsgMap := structToMap(privateMsg) + err = p.Wsclient.SendMessage(privateMsgMap) + if err != nil { + return fmt.Errorf("error sending group message via wsclient: %v", err) + } + } else { + //将私聊信息转化为群信息(特殊需求情况下) + + //转换at + messageText := handlers.RevertTransformedText(data.Content) + //转换appid + AppIDString := strconv.FormatUint(p.Settings.AppID, 10) + //构造echo + echostr := AppIDString + "_" + strconv.FormatInt(s, 10) + //把userid作为群号 + //映射str的userid到int + userid64, err := idmap.StoreIDv2(data.Author.ID) + if err != nil { + log.Printf("Error storing ID: %v", err) + return nil + } + //映射str的messageID到int + messageID64, err := idmap.StoreIDv2(data.ID) + if err != nil { + log.Printf("Error storing ID: %v", err) + return nil + } + messageID := int(messageID64) + //todo 判断array模式 然后对Message处理成array格式 + groupMsg := OnebotGroupMessage{ + RawMessage: messageText, + Message: messageText, + MessageID: messageID, + GroupID: userid64, + MessageType: "group", + PostType: "message", + SelfID: int64(p.Settings.AppID), + UserID: userid64, + Sender: Sender{ + Nickname: "", + UserID: userid64, + }, + SubType: "normal", + Time: time.Now().Unix(), + Avatar: "", + Echo: echostr, + } + //将当前s和appid和message进行映射 + echo.AddMsgID(AppIDString, s, data.ID) + echo.AddMsgType(AppIDString, s, "group_private") + //为不支持双向echo的ob服务端映射 + echo.AddMsgID(AppIDString, userid64, data.ID) + echo.AddMsgType(AppIDString, userid64, "group_private") + + //调试 + PrintStructWithFieldNames(groupMsg) + + // Convert OnebotGroupMessage to map and send + groupMsgMap := structToMap(groupMsg) + err = p.Wsclient.SendMessage(groupMsgMap) + if err != nil { + return fmt.Errorf("error sending group message via wsclient: %v", err) + } + } + + return nil +} diff --git a/Processor/ProcessChannelDirectMessage.go b/Processor/ProcessChannelDirectMessage.go index e2418474..51181ffd 100644 --- a/Processor/ProcessChannelDirectMessage.go +++ b/Processor/ProcessChannelDirectMessage.go @@ -7,6 +7,7 @@ import ( "strconv" "time" + "github.com/hoshinonyaruko/gensokyo/config" "github.com/hoshinonyaruko/gensokyo/echo" "github.com/hoshinonyaruko/gensokyo/handlers" "github.com/hoshinonyaruko/gensokyo/idmap" @@ -56,10 +57,15 @@ func (p *Processor) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) e log.Fatalf("Error storing ID: %v", err) } messageID := int(messageID64) - + messageText := data.Content + // 如果在Array模式下, 则处理Message为Segment格式 + var segmentedMessages interface{} = messageText + if config.GetArrayValue() { + segmentedMessages = handlers.ConvertToSegmentedMessage(data) + } privateMsg := OnebotPrivateMessage{ - RawMessage: data.Content, - Message: data.Content, + RawMessage: messageText, + Message: segmentedMessages, MessageID: messageID, MessageType: "private", PostType: "message", @@ -144,6 +150,8 @@ func (p *Processor) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) e //为不支持双向echo的ob服务端映射 echo.AddMsgID(AppIDString, userid64, data.ID) echo.AddMsgType(AppIDString, userid64, "guild_private") + //储存当前群或频道号的类型 + idmap.WriteConfigv2(data.ChannelID, "type", "guild_private") //调试 PrintStructWithFieldNames(onebotMsg) @@ -186,10 +194,14 @@ func (p *Processor) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) e return nil } messageID := int(messageID64) - //todo 判断array模式 然后对Message处理成array格式 + // 如果在Array模式下, 则处理Message为Segment格式 + var segmentedMessages interface{} = messageText + if config.GetArrayValue() { + segmentedMessages = handlers.ConvertToSegmentedMessage(data) + } groupMsg := OnebotGroupMessage{ RawMessage: messageText, - Message: messageText, + Message: segmentedMessages, MessageID: messageID, GroupID: int64(channelIDInt), MessageType: "group", @@ -211,6 +223,8 @@ func (p *Processor) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) e //为不支持双向echo的ob服务端映射 echo.AddMsgID(AppIDString, userid64, data.ID) echo.AddMsgType(AppIDString, userid64, "guild_private") + //储存当前群或频道号的类型 + idmap.WriteConfigv2(data.ChannelID, "type", "guild_private") //调试 PrintStructWithFieldNames(groupMsg) diff --git a/Processor/ProcessGroupMessage.go b/Processor/ProcessGroupMessage.go index 0c823e80..5610b493 100644 --- a/Processor/ProcessGroupMessage.go +++ b/Processor/ProcessGroupMessage.go @@ -7,6 +7,7 @@ import ( "strconv" "time" + "github.com/hoshinonyaruko/gensokyo/config" "github.com/hoshinonyaruko/gensokyo/echo" "github.com/hoshinonyaruko/gensokyo/handlers" "github.com/hoshinonyaruko/gensokyo/idmap" @@ -43,7 +44,7 @@ func (p *Processor) ProcessGroupMessage(data *dto.WSGroupATMessageData) error { log.Printf("Error storing ID: %v", err) return nil } - //userid := int(userid64) + //映射str的messageID到int messageID64, err := idmap.StoreIDv2(data.ID) if err != nil { @@ -51,10 +52,14 @@ func (p *Processor) ProcessGroupMessage(data *dto.WSGroupATMessageData) error { return nil } messageID := int(messageID64) - // todo 判断array模式 然后对Message处理成array格式 + // 如果在Array模式下, 则处理Message为Segment格式 + var segmentedMessages interface{} = messageText + if config.GetArrayValue() { + segmentedMessages = handlers.ConvertToSegmentedMessage(data) + } groupMsg := OnebotGroupMessage{ RawMessage: messageText, - Message: messageText, + Message: segmentedMessages, MessageID: messageID, GroupID: GroupID64, MessageType: "group", @@ -77,6 +82,8 @@ func (p *Processor) ProcessGroupMessage(data *dto.WSGroupATMessageData) error { //为不支持双向echo的ob服务端映射 echo.AddMsgID(AppIDString, GroupID64, data.ID) echo.AddMsgType(AppIDString, GroupID64, "group") + //储存当前群或频道号的类型 + idmap.WriteConfigv2(data.GroupID, "type", "group") // 调试 PrintStructWithFieldNames(groupMsg) diff --git a/Processor/ProcessGuildATMessage.go b/Processor/ProcessGuildATMessage.go index 68a8ed27..c3de90c5 100644 --- a/Processor/ProcessGuildATMessage.go +++ b/Processor/ProcessGuildATMessage.go @@ -7,6 +7,7 @@ import ( "strconv" "time" + "github.com/hoshinonyaruko/gensokyo/config" "github.com/hoshinonyaruko/gensokyo/echo" "github.com/hoshinonyaruko/gensokyo/handlers" "github.com/hoshinonyaruko/gensokyo/idmap" @@ -37,19 +38,16 @@ func (p *Processor) ProcessGuildATMessage(data *dto.WSATMessageData) error { log.Printf("Error storing ID: %v", err) return nil } - //映射str的messageID到int - //可以是string - // messageID64, err := idmap.StoreIDv2(data.ID) - // if err != nil { - // log.Printf("Error storing ID: %v", err) - // return nil - // } - // messageID := int(messageID64) + // 如果在Array模式下, 则处理Message为Segment格式 + var segmentedMessages interface{} = messageText + if config.GetArrayValue() { + segmentedMessages = handlers.ConvertToSegmentedMessage(data) + } // 处理onebot_channel_message逻辑 onebotMsg := OnebotChannelMessage{ ChannelID: data.ChannelID, GuildID: data.GuildID, - Message: messageText, + Message: segmentedMessages, RawMessage: messageText, MessageID: data.ID, MessageType: "guild", @@ -74,6 +72,8 @@ func (p *Processor) ProcessGuildATMessage(data *dto.WSATMessageData) error { //为不支持双向echo的ob11服务端映射 echo.AddMsgID(AppIDString, userid64, data.ID) echo.AddMsgType(AppIDString, userid64, "guild") + //储存当前群或频道号的类型 + idmap.WriteConfigv2(data.ChannelID, "type", "guild") //调试 PrintStructWithFieldNames(onebotMsg) @@ -120,10 +120,14 @@ func (p *Processor) ProcessGuildATMessage(data *dto.WSATMessageData) error { return nil } messageID := int(messageID64) - //todo 判断array模式 然后对Message处理成array格式 + // 如果在Array模式下, 则处理Message为Segment格式 + var segmentedMessages interface{} = messageText + if config.GetArrayValue() { + segmentedMessages = handlers.ConvertToSegmentedMessage(data) + } groupMsg := OnebotGroupMessage{ RawMessage: messageText, - Message: messageText, + Message: segmentedMessages, MessageID: messageID, GroupID: int64(channelIDInt), MessageType: "group", @@ -145,6 +149,8 @@ func (p *Processor) ProcessGuildATMessage(data *dto.WSATMessageData) error { //为不支持双向echo的ob服务端映射 echo.AddMsgID(AppIDString, int64(channelIDInt), data.ID) echo.AddMsgType(AppIDString, int64(channelIDInt), "guild") + //储存当前群或频道号的类型 + idmap.WriteConfigv2(data.ChannelID, "type", "guild") //调试 PrintStructWithFieldNames(groupMsg) diff --git a/Processor/ProcessGuildNormalMessage.go b/Processor/ProcessGuildNormalMessage.go index cba53ac2..931b02ac 100644 --- a/Processor/ProcessGuildNormalMessage.go +++ b/Processor/ProcessGuildNormalMessage.go @@ -7,6 +7,7 @@ import ( "strconv" "time" + "github.com/hoshinonyaruko/gensokyo/config" "github.com/hoshinonyaruko/gensokyo/echo" "github.com/hoshinonyaruko/gensokyo/handlers" "github.com/hoshinonyaruko/gensokyo/idmap" @@ -36,19 +37,16 @@ func (p *Processor) ProcessGuildNormalMessage(data *dto.WSMessageData) error { log.Printf("Error storing ID: %v", err) return nil } - //映射str的messageID到int - //可以是string - // messageID64, err := idmap.StoreIDv2(data.ID) - // if err != nil { - // log.Printf("Error storing ID: %v", err) - // return nil - // } - // messageID := int(messageID64) + // 如果在Array模式下, 则处理Message为Segment格式 + var segmentedMessages interface{} = messageText + if config.GetArrayValue() { + segmentedMessages = handlers.ConvertToSegmentedMessage(data) + } // 处理onebot_channel_message逻辑 onebotMsg := OnebotChannelMessage{ ChannelID: data.ChannelID, GuildID: data.GuildID, - Message: messageText, + Message: segmentedMessages, RawMessage: messageText, MessageID: data.ID, MessageType: "guild", @@ -73,6 +71,8 @@ func (p *Processor) ProcessGuildNormalMessage(data *dto.WSMessageData) error { //为不支持双向echo的ob11服务端映射 echo.AddMsgID(AppIDString, userid64, data.ID) echo.AddMsgType(AppIDString, userid64, "guild") + //储存当前群或频道号的类型 + idmap.WriteConfigv2(data.ChannelID, "type", "guild") //调试 PrintStructWithFieldNames(onebotMsg) @@ -119,10 +119,14 @@ func (p *Processor) ProcessGuildNormalMessage(data *dto.WSMessageData) error { return nil } messageID := int(messageID64) - //todo 判断array模式 然后对Message处理成array格式 + // 如果在Array模式下, 则处理Message为Segment格式 + var segmentedMessages interface{} = messageText + if config.GetArrayValue() { + segmentedMessages = handlers.ConvertToSegmentedMessage(data) + } groupMsg := OnebotGroupMessage{ RawMessage: messageText, - Message: messageText, + Message: segmentedMessages, MessageID: messageID, GroupID: int64(channelIDInt), MessageType: "group", @@ -144,6 +148,8 @@ func (p *Processor) ProcessGuildNormalMessage(data *dto.WSMessageData) error { //为不支持双向echo的ob服务端映射 echo.AddMsgID(AppIDString, int64(channelIDInt), data.ID) echo.AddMsgType(AppIDString, int64(channelIDInt), "guild") + //储存当前群或频道号的类型 + idmap.WriteConfigv2(data.ChannelID, "type", "guild") //调试 PrintStructWithFieldNames(groupMsg) diff --git a/Processor/Processor.go b/Processor/Processor.go index 2a197cfa..5e2064cc 100644 --- a/Processor/Processor.go +++ b/Processor/Processor.go @@ -30,21 +30,21 @@ type Sender struct { // 频道信息事件 type OnebotChannelMessage struct { - ChannelID string `json:"channel_id"` - GuildID string `json:"guild_id"` - Message string `json:"message"` - MessageID string `json:"message_id"` - MessageType string `json:"message_type"` - PostType string `json:"post_type"` - SelfID int64 `json:"self_id"` - SelfTinyID string `json:"self_tiny_id"` - Sender Sender `json:"sender"` - SubType string `json:"sub_type"` - Time int64 `json:"time"` - Avatar string `json:"avatar"` - UserID int64 `json:"user_id"` - RawMessage string `json:"raw_message"` - Echo string `json:"echo"` + ChannelID string `json:"channel_id"` + GuildID string `json:"guild_id"` + Message interface{} `json:"message"` + MessageID string `json:"message_id"` + MessageType string `json:"message_type"` + PostType string `json:"post_type"` + SelfID int64 `json:"self_id"` + SelfTinyID string `json:"self_tiny_id"` + Sender Sender `json:"sender"` + SubType string `json:"sub_type"` + Time int64 `json:"time"` + Avatar string `json:"avatar"` + UserID int64 `json:"user_id"` + RawMessage string `json:"raw_message"` + Echo string `json:"echo"` } // 群信息事件 @@ -140,23 +140,6 @@ func (p *Processor) ProcessInlineSearch(data *dto.WSInteractionData) error { // return nil // } -// ProcessC2CMessage 处理C2C消息 群私聊 -func (p *Processor) ProcessC2CMessage(rawMessage string, data *dto.WSC2CMessageData) error { - // ctx := context.Background() // 或从更高级别传递一个上下文 - - // // 在这里处理C2C消息 - // // ... - - // // 示例:直接回复收到的消息 - // response := fmt.Sprintf("Received your message: %s", rawMessage) // 创建响应消息 - // err := p.api.PostC2CMessage(ctx, response) // 替换为您的OpenAPI方法 - // if err != nil { - // return err - // } - - return nil -} - // 打印结构体的函数 func PrintStructWithFieldNames(v interface{}) { val := reflect.ValueOf(v) diff --git a/botgo/token/authtoken.go b/botgo/token/authtoken.go index 303b302d..068efe6a 100644 --- a/botgo/token/authtoken.go +++ b/botgo/token/authtoken.go @@ -54,59 +54,59 @@ func (atoken *AuthTokenInfo) ForceUpToken(ctx context.Context, reason string) er // StartRefreshAccessToken 启动获取AccessToken的后台刷新 // 该函数首先会立即查询一次AccessToken,并保存。 // 然后它将在后台启动一个goroutine,定期(根据token的有效期)刷新AccessToken。 -// func (atoken *AuthTokenInfo) StartRefreshAccessToken(ctx context.Context, tokenURL, appID, clientSecrent string) (err error) { -// // 首先,立即获取一次AccessToken -// tokenInfo, err := queryAccessToken(ctx, tokenURL, appID, clientSecrent) -// if err != nil { -// return err -// } -// atoken.setAuthToken(tokenInfo) -// fmt.Printf("获取到的token是: %s\n", tokenInfo.Token) // 输出获取到的token - -// // 获取token的有效期(通常以秒为单位) -// tokenTTL := tokenInfo.ExpiresIn -// // 使用sync.Once保证仅启动一个goroutine进行定时刷新 -// atoken.once.Do(func() { -// go func() { // 启动一个新的goroutine -// for { -// // 如果tokenTTL为0或负数,将其设置为1 -// if tokenTTL <= 0 { -// tokenTTL = 1 -// } -// select { -// case <-time.NewTimer(time.Duration(tokenTTL) * time.Second).C: // 当token过期时 -// case upToken := <-atoken.forceUpToken: // 接收强制更新token的信号 -// log.Warnf("recv uptoken info:%v", upToken) -// case <-ctx.Done(): // 当上下文结束时,退出goroutine -// log.Warnf("recv ctx:%v exit refreshAccessToken", ctx.Err()) -// return -// } -// // 查询并获取新的AccessToken -// tokenInfo, err := queryAccessToken(ctx, tokenURL, appID, clientSecrent) -// if err == nil { -// atoken.setAuthToken(tokenInfo) -// fmt.Printf("获取到的token是: %s\n", tokenInfo.Token) // 输出获取到的token -// tokenTTL = tokenInfo.ExpiresIn -// } else { -// log.Errorf("queryAccessToken err:%v", err) -// } -// } -// }() -// }) -// return -// } - -// 测试用 func (atoken *AuthTokenInfo) StartRefreshAccessToken(ctx context.Context, tokenURL, appID, clientSecrent string) (err error) { - // 创建一个固定的token信息 - fixedTokenInfo := AccessTokenInfo{ - Token: "PpAPgoel0-gTeaxy-ydak0kUKxJrCSlbLcwtuPt99jCPVrahkqh3WSiIy9s63tCZnTEp4asw035u", - ExpiresIn: 3600, // 这里假设token的有效时间是3600秒,你可以根据需要调整 + // 首先,立即获取一次AccessToken + tokenInfo, err := queryAccessToken(ctx, tokenURL, appID, clientSecrent) + if err != nil { + return err } - atoken.setAuthToken(fixedTokenInfo) - return nil + atoken.setAuthToken(tokenInfo) + fmt.Printf("获取到的token是: %s\n", tokenInfo.Token) // 输出获取到的token + + // 获取token的有效期(通常以秒为单位) + tokenTTL := tokenInfo.ExpiresIn + // 使用sync.Once保证仅启动一个goroutine进行定时刷新 + atoken.once.Do(func() { + go func() { // 启动一个新的goroutine + for { + // 如果tokenTTL为0或负数,将其设置为1 + if tokenTTL <= 0 { + tokenTTL = 1 + } + select { + case <-time.NewTimer(time.Duration(tokenTTL) * time.Second).C: // 当token过期时 + case upToken := <-atoken.forceUpToken: // 接收强制更新token的信号 + log.Warnf("recv uptoken info:%v", upToken) + case <-ctx.Done(): // 当上下文结束时,退出goroutine + log.Warnf("recv ctx:%v exit refreshAccessToken", ctx.Err()) + return + } + // 查询并获取新的AccessToken + tokenInfo, err := queryAccessToken(ctx, tokenURL, appID, clientSecrent) + if err == nil { + atoken.setAuthToken(tokenInfo) + fmt.Printf("获取到的token是: %s\n", tokenInfo.Token) // 输出获取到的token + tokenTTL = tokenInfo.ExpiresIn + } else { + log.Errorf("queryAccessToken err:%v", err) + } + } + }() + }) + return } +// 测试用 +// func (atoken *AuthTokenInfo) StartRefreshAccessToken(ctx context.Context, tokenURL, appID, clientSecrent string) (err error) { +// // 创建一个固定的token信息 +// fixedTokenInfo := AccessTokenInfo{ +// Token: "FK2RrubmpJ29LZ1v2LVuE6YrRB6zsjnP4wF3EaHy0g48H-SPYIGn4irXvHNvYMgV6hLP6hEimUgXuw", +// ExpiresIn: 3600, // 这里假设token的有效时间是3600秒,你可以根据需要调整 +// } +// atoken.setAuthToken(fixedTokenInfo) +// return nil +// } + func (atoken *AuthTokenInfo) getAuthToken() AccessTokenInfo { atoken.lock.RLock() defer atoken.lock.RUnlock() diff --git a/botgo/token/token.go b/botgo/token/token.go index b669b243..f594fa4b 100644 --- a/botgo/token/token.go +++ b/botgo/token/token.go @@ -91,16 +91,16 @@ func (t *Token) GetString_old() string { } // GetAccessToken 取得鉴权Token -// func (t *Token) GetAccessToken() string { -// return t.authToken.getAuthToken().Token -// } - -// GetAccessToken 取得测试鉴权Token func (t *Token) GetAccessToken() string { - // 固定的token值 - return "PpAPgoel0-gTeaxy-ydak0kUKxJrCSlbLcwtuPt99jCPVrahkqh3WSiIy9s63tCZnTEp4asw035u" + return t.authToken.getAuthToken().Token } +// GetAccessToken 取得测试鉴权Token +// func (t *Token) GetAccessToken() string { +// // 固定的token值 +// return "FK2RrubmpJ29LZ1v2LVuE6YrRB6zsjnP4wF3EaHy0g48H-SPYIGn4irXvHNvYMgV6hLP6hEimUgXuw" +// } + // UpAccessToken 更新accessToken func (t *Token) UpAccessToken(ctx context.Context, reason interface{}) error { return t.authToken.ForceUpToken(ctx, fmt.Sprint(reason)) diff --git a/callapi/callapi.go b/callapi/callapi.go index 445ea523..51116fd4 100644 --- a/callapi/callapi.go +++ b/callapi/callapi.go @@ -58,9 +58,11 @@ type ParamsContent struct { BotQQ string `json:"botqq"` ChannelID string `json:"channel_id"` GuildID string `json:"guild_id"` - GroupID interface{} `json:"group_id"` // 每一种onebotv11实现的字段类型都可能不同 - Message interface{} `json:"message"` // 这里使用interface{}因为它可能是多种类型 - UserID interface{} `json:"user_id"` // 这里使用interface{}因为它可能是多种类型 + GroupID interface{} `json:"group_id"` // 每一种onebotv11实现的字段类型都可能不同 + Message interface{} `json:"message"` // 这里使用interface{}因为它可能是多种类型 + UserID interface{} `json:"user_id"` // 这里使用interface{}因为它可能是多种类型 + Duration int `json:"duration,omitempty"` // 可选的整数 + Enable bool `json:"enable,omitempty"` // 可选的布尔值 } // 自定义一个ParamsContent的UnmarshalJSON 让GroupID同时兼容str和int @@ -68,6 +70,7 @@ func (p *ParamsContent) UnmarshalJSON(data []byte) error { type Alias ParamsContent aux := &struct { GroupID interface{} `json:"group_id"` + UserID interface{} `json:"user_id"` *Alias }{ Alias: (*Alias)(p), @@ -86,6 +89,18 @@ func (p *ParamsContent) UnmarshalJSON(data []byte) error { default: return fmt.Errorf("GroupID has unsupported type") } + + switch v := aux.UserID.(type) { + case nil: // 当UserID不存在时 + p.UserID = "" + case float64: // JSON的数字默认被解码为float64 + p.UserID = fmt.Sprintf("%.0f", v) // 将其转换为字符串,忽略小数点后的部分 + case string: + p.UserID = v + default: + return fmt.Errorf("UserID has unsupported type") + } + return nil } @@ -99,7 +114,8 @@ type Message struct { // 这是一个接口,在wsclient传入client但不需要引用wsclient包,避免循环引用 type Client interface { SendMessage(message map[string]interface{}) error - GetAppID() string + GetAppID() uint64 + GetAppIDStr() string } // 根据action订阅handler处理api diff --git a/config/config.go b/config/config.go index 8019b144..2d0f37a0 100644 --- a/config/config.go +++ b/config/config.go @@ -101,3 +101,25 @@ func GetPortValue() string { } return instance.Settings.Port } + +// 获取Array的值 +func GetArrayValue() bool { + mu.Lock() + defer mu.Unlock() + + if instance == nil { + log.Println("Warning: instance is nil when trying to get array value.") + return false + } + return instance.Settings.Array +} + +// 获取AppID +func GetAppID() uint64 { + mu.Lock() + defer mu.Unlock() + if instance != nil { + return instance.Settings.AppID + } + return 0 // or whatever default value you'd like to return if instance is nil +} diff --git a/config_template.go b/config_template.go index 69999947..edb75ad5 100644 --- a/config_template.go +++ b/config_template.go @@ -26,7 +26,7 @@ settings: global_private_to_channel: false # 是否将私聊转换成频道 array: false - server_dir: ":" # 提供图片上传服务的服务器(图床)需要带端口号. 如果需要发base64图,需为公网ip,且开放对应端口 + server_dir: "" # 提供图片上传服务的服务器(图床)需要带端口号. 如果需要发base64图,需为公网ip,且开放对应端口 port: "" # idmaps和图床对外开放的端口号 lotus: false # lotus特性默认为false,当为true时,将会连接到另一个lotus为false的gensokyo。 # 使用它提供的图床和idmaps服务(场景:同一个机器人在不同服务器运行,或内网需要发送base64图)。 diff --git a/config_template.yml b/config_template.yml index bbfd3259..dc534926 100644 --- a/config_template.yml +++ b/config_template.yml @@ -23,7 +23,7 @@ settings: global_private_to_channel: false # 是否将私聊转换成频道 array: false - server_dir: ":" # 提供图片上传服务的服务器(图床)需要带端口号. 如果需要发base64图,需为公网ip,且开放对应端口 + server_dir: "" # 提供图片上传服务的服务器(图床)需要带端口号. 如果需要发base64图,需为公网ip,且开放对应端口 port: "" # idmaps和图床对外开放的端口号 lotus: false # lotus特性默认为false,当为true时,将会连接到另一个lotus为false的gensokyo。 # 使用它提供的图床和idmaps服务(场景:同一个机器人在不同服务器运行,或内网需要发送base64图)。 diff --git a/handlers/get_friend_list.go b/handlers/get_friend_list.go new file mode 100644 index 00000000..313b2630 --- /dev/null +++ b/handlers/get_friend_list.go @@ -0,0 +1,63 @@ +package handlers + +import ( + "encoding/json" + "log" + + "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/tencent-connect/botgo/openapi" +) + +func init() { + callapi.RegisterHandler("get_friend_list", handleGetFriendList) +} + +type APIOutput struct { + Data []FriendData `json:"data"` + Message string `json:"message"` + RetCode int `json:"retcode"` + Status string `json:"status"` + Echo interface{} `json:"echo"` +} + +type FriendData struct { + Nickname string `json:"nickname"` + Remark string `json:"remark"` + UserID string `json:"user_id"` +} + +func handleGetFriendList(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { + var output APIOutput + + for i := 0; i < 10; i++ { // Assume we want to loop 10 times to create friend data + data := FriendData{ + Nickname: "小狐狸", + Remark: "", + UserID: "2022717137", + } + output.Data = append(output.Data, data) + } + + output.Message = "" + output.RetCode = 0 + output.Status = "ok" + + output.Echo = message.Echo + + // Convert the APIOutput structure to a map[string]interface{} + outputMap := structToMap(output) + + // Send the map + err := client.SendMessage(outputMap) //发回去 + if err != nil { + log.Printf("error sending friend list via wsclient: %v", err) + } + + result, err := json.Marshal(output) + if err != nil { + log.Printf("Error marshaling data: %v", err) + return + } + + log.Printf("get_friend_list: %s", result) +} diff --git a/handlers/get_group_info.go b/handlers/get_group_info.go index 3464a97d..21cc3028 100644 --- a/handlers/get_group_info.go +++ b/handlers/get_group_info.go @@ -77,7 +77,7 @@ func handleGetGroupInfo(client callapi.Client, api openapi.OpenAPI, apiv2 openap groupInfoMap := structToMap(groupInfo) // 打印groupInfoMap的内容 - log.Printf("groupInfoMap(频道): %+v/n", groupInfoMap) + log.Printf("groupInfoMap(频道): %+v\n", groupInfoMap) err = client.SendMessage(groupInfoMap) //发回去 if err != nil { diff --git a/handlers/get_group_list.go b/handlers/get_group_list.go new file mode 100644 index 00000000..604a1327 --- /dev/null +++ b/handlers/get_group_list.go @@ -0,0 +1,154 @@ +package handlers + +import ( + "context" + "encoding/json" + "log" + "strconv" + "time" + + "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/tencent-connect/botgo/dto" + "github.com/tencent-connect/botgo/openapi" +) + +func init() { + callapi.RegisterHandler("get_group_list", getGroupList) +} + +type Guild struct { + JoinedAt string `json:"joined_at"` + ID string `json:"id"` + OwnerID string `json:"owner_id"` + Description string `json:"description"` + Name string `json:"name"` + MaxMembers string `json:"max_members"` + MemberCount string `json:"member_count"` +} + +type Group struct { + GroupCreateTime string `json:"group_create_time"` + GroupID string `json:"group_id"` + GroupLevel string `json:"group_level"` + GroupMemo string `json:"group_memo"` + GroupName string `json:"group_name"` + MaxMemberCount string `json:"max_member_count"` + MemberCount string `json:"member_count"` +} + +type GroupList struct { + Data []Group `json:"data"` + Message string `json:"message"` + RetCode int `json:"retcode"` + Status string `json:"status"` + Echo interface{} `json:"echo"` +} + +func getGroupList(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { + + //群还不支持,这里取得是频道的,如果后期支持了群,那都请求,一起返回 + + // 初始化pager + pager := &dto.GuildPager{ + Limit: "400", + } + + guilds, err := api.MeGuilds(context.TODO(), pager) + if err != nil { + log.Println("Error fetching guild list:", err) + // 创建虚拟的Group + virtualGroup := Group{ + GroupCreateTime: time.Now().Format(time.RFC3339), + GroupID: "0000000", // 或其他虚拟值 + GroupLevel: "0", + GroupMemo: "Error Fetching Guilds", + GroupName: "Error Guild", + MaxMemberCount: "0", + MemberCount: "0", + } + + // 创建包含虚拟Group的GroupList + groupList := GroupList{ + Data: []Group{virtualGroup}, + Message: "Error fetching guilds", + RetCode: -1, // 可以使用其他的错误代码 + Status: "error", + Echo: "0", + } + + if message.Echo == "" { + groupList.Echo = "0" + } else { + groupList.Echo = message.Echo + + outputMap := structToMap(groupList) + + log.Printf("getGroupList(频道): %+v\n", outputMap) + + err = client.SendMessage(outputMap) + if err != nil { + log.Printf("error sending group info via wsclient: %v", err) + } + + result, err := json.Marshal(groupList) + if err != nil { + log.Printf("Error marshaling data: %v", err) + return + } + + log.Printf("get_group_list: %s", result) + return + } + } + + var groups []Group + for _, guild := range guilds { + joinedAtTime, err := guild.JoinedAt.Time() + if err != nil { + log.Println("Error parsing JoinedAt timestamp:", err) + continue + } + joinedAtStr := joinedAtTime.Format(time.RFC3339) // or any other format you prefer + + group := Group{ + GroupCreateTime: joinedAtStr, + GroupID: guild.ID, + GroupLevel: guild.OwnerID, + GroupMemo: guild.Desc, + GroupName: guild.Name, + MaxMemberCount: strconv.FormatInt(guild.MaxMembers, 10), + MemberCount: strconv.Itoa(guild.MemberCount), + // Add other fields if necessary + } + groups = append(groups, group) + } + + groupList := GroupList{ + Data: groups, + Message: "", + RetCode: 0, + Status: "ok", + } + if message.Echo == "" { + groupList.Echo = "0" + } else { + groupList.Echo = message.Echo + + outputMap := structToMap(groupList) + + log.Printf("getGroupList(频道): %+v\n", outputMap) + + err = client.SendMessage(outputMap) + if err != nil { + log.Printf("error sending group info via wsclient: %v", err) + } + + result, err := json.Marshal(groupList) + if err != nil { + log.Printf("Error marshaling data: %v", err) + return + } + + log.Printf("get_group_list: %s", result) + } +} diff --git a/handlers/get_group_member_list.go b/handlers/get_group_member_list.go new file mode 100644 index 00000000..b3c71333 --- /dev/null +++ b/handlers/get_group_member_list.go @@ -0,0 +1,96 @@ +package handlers + +import ( + "context" + "log" + "time" + + "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/hoshinonyaruko/gensokyo/idmap" + "github.com/tencent-connect/botgo/dto" + "github.com/tencent-connect/botgo/openapi" +) + +// Member Onebot 群成员 +type MemberList struct { + UserID string `json:"user_id"` + GroupID string `json:"group_id"` + Nickname string `json:"nickname"` + Role string `json:"role"` + JoinTime string `json:"join_time"` + LastSentTime string `json:"last_sent_time"` +} + +func init() { + callapi.RegisterHandler("get_group_member_list", getGroupMemberList) +} + +func getGroupMemberList(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { + + msgType, err := idmap.ReadConfigv2(message.Params.GroupID.(string), "type") + if err != nil { + log.Printf("Error reading config: %v", err) + return + } + + switch msgType { + case "group": + log.Printf("getGroupMemberList(频道): 目前暂未开放该能力") + return + case "private": + log.Printf("getGroupMemberList(频道): 目前暂未适配私聊虚拟群场景获取虚拟群列表能力") + return + case "guild": + pager := &dto.GuildMembersPager{ + Limit: "400", + } + membersFromAPI, err := api.GuildMembers(context.TODO(), message.Params.GroupID.(string), pager) + if err != nil { + log.Printf("Failed to fetch group members for guild %s: %v", message.Params.GroupID.(string), err) + return + } + + var members []MemberList + for _, memberFromAPI := range membersFromAPI { + joinedAtTime, err := memberFromAPI.JoinedAt.Time() + if err != nil { + log.Println("Error parsing JoinedAt timestamp:", err) + continue + } + joinedAtStr := joinedAtTime.Format(time.RFC3339) // or any other format + + member := MemberList{ + UserID: memberFromAPI.User.ID, + GroupID: message.Params.GroupID.(string), + Nickname: memberFromAPI.Nick, + JoinTime: joinedAtStr, + } + for _, role := range memberFromAPI.Roles { + switch role { + case "4": + member.Role = "owner" + case "2": + member.Role = "admin" + case "11", "default": + member.Role = "member" + } + if member.Role == "owner" || member.Role == "admin" { + break + } + } + members = append(members, member) + } + + // Convert the APIOutput structure to a map[string]interface{} + outputMap := structToMap(members) + + log.Printf("getGroupMemberList(频道): %+v\n", outputMap) + + err = client.SendMessage(outputMap) //发回去 + if err != nil { + log.Printf("Error sending message via client: %v", err) + } + default: + log.Printf("Unknown msgType: %s", msgType) + } +} diff --git a/handlers/get_guild_channel_list.go b/handlers/get_guild_channel_list.go new file mode 100644 index 00000000..c2f0acb6 --- /dev/null +++ b/handlers/get_guild_channel_list.go @@ -0,0 +1,41 @@ +package handlers + +import ( + "log" + + "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/tencent-connect/botgo/openapi" +) + +type GuildChannelListResponse struct { + Data []interface{} `json:"data"` + Message string `json:"message"` + RetCode int `json:"retcode"` + Status string `json:"status"` + Echo interface{} `json:"echo"` +} + +func init() { + callapi.RegisterHandler("get_guild_channel_list", getGuildChannelList) +} + +func getGuildChannelList(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { + + var response GuildChannelListResponse + + response.Data = make([]interface{}, 0) // No data at the moment, but can be populated in the future + response.Message = "" + response.RetCode = 0 + response.Status = "ok" + response.Echo = message.Echo + + // Convert the members slice to a map + outputMap := structToMap(response) + + log.Printf("get_guild_channel_list: %s", outputMap) + + err := client.SendMessage(outputMap) //发回去 + if err != nil { + log.Printf("Error sending message via client: %v", err) + } +} diff --git a/handlers/get_guild_list.go b/handlers/get_guild_list.go new file mode 100644 index 00000000..97036ae7 --- /dev/null +++ b/handlers/get_guild_list.go @@ -0,0 +1,58 @@ +package handlers + +import ( + "log" + + "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/tencent-connect/botgo/openapi" +) + +type GuildListResponse struct { + Data []GuildData `json:"data"` + Message string `json:"message"` + RetCode int `json:"retcode"` + Status string `json:"status"` + Echo interface{} `json:"echo"` +} + +type GuildData struct { + GuildID string `json:"guild_id"` + GuildName string `json:"guild_name"` + GuildDisplayID string `json:"guild_display_id"` +} + +func init() { + callapi.RegisterHandler("get_guild_list", getGuildList) +} + +func getGuildList(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { + + var response GuildListResponse + + // Assuming 'a' is some value you want to loop till. + a := 1 // Replace with appropriate value + + for i := 1; i <= a; i++ { + guildData := GuildData{ + GuildID: "0", + GuildName: "868858989", + GuildDisplayID: "868858989", + } + response.Data = append(response.Data, guildData) + } + + response.Message = "" + response.RetCode = 0 + response.Status = "ok" + response.Echo = string(message.Echo) // Directly assign the string value + + // Convert the members slice to a map + outputMap := structToMap(response) + + log.Printf("getGuildList(频道): %+v\n", outputMap) + + err := client.SendMessage(outputMap) + if err != nil { + log.Printf("Error sending message via client: %v", err) + } +} diff --git a/handlers/get_guild_service_profile.go b/handlers/get_guild_service_profile.go new file mode 100644 index 00000000..b4305e09 --- /dev/null +++ b/handlers/get_guild_service_profile.go @@ -0,0 +1,51 @@ +package handlers + +import ( + "log" + + "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/tencent-connect/botgo/openapi" +) + +type GuildServiceProfileResponse struct { + Data GuildServiceProfileData `json:"data"` + Message string `json:"message"` + RetCode int `json:"retcode"` + Status string `json:"status"` + Echo interface{} `json:"echo"` +} + +type GuildServiceProfileData struct { + Nickname string `json:"nickname"` + TinyID int64 `json:"tiny_id"` +} + +func init() { + callapi.RegisterHandler("get_guild_service_profile", getGuildServiceProfile) +} + +func getGuildServiceProfile(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { + + var response GuildServiceProfileResponse + + response.Data = GuildServiceProfileData{ + Nickname: "", + TinyID: 0, + } + response.Message = "" + response.RetCode = 0 + response.Status = "ok" + response.Echo = string(message.Echo) // Directly assign the string value + + // Convert the members slice to a map + outputMap := structToMap(response) + + log.Printf("get_guild_service_profile: %+v/n", outputMap) + + err := client.SendMessage(outputMap) + if err != nil { + log.Printf("Error sending message via client: %v", err) + } else { + log.Printf("响应get_guild_service_profile: %+v", outputMap) + } +} diff --git a/handlers/get_login_info.go b/handlers/get_login_info.go new file mode 100644 index 00000000..1ac51b61 --- /dev/null +++ b/handlers/get_login_info.go @@ -0,0 +1,59 @@ +package handlers + +import ( + "fmt" + "log" + + "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/hoshinonyaruko/gensokyo/config" + "github.com/tencent-connect/botgo/openapi" +) + +type LoginInfoResponse struct { + Data LoginInfoData `json:"data"` + Message string `json:"message"` + RetCode int `json:"retcode"` + Status string `json:"status"` + Echo interface{} `json:"echo"` +} + +type LoginInfoData struct { + Nickname string `json:"nickname"` + UserID string `json:"user_id"` // Assuming UserID is a string type based on the pseudocode +} + +func init() { + callapi.RegisterHandler("get_login_info", getLoginInfo) +} + +func getLoginInfo(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { + + var response LoginInfoResponse + + // Assuming 全局_botid is a global or environment variable + globalBotID := config.GetAppID() // Replace with the actual global variable or value + userIDStr := fmt.Sprintf("%d", globalBotID) + + response.Data = LoginInfoData{ + Nickname: "gensokyo全域机器人", + UserID: userIDStr, + } + response.Message = "" + response.RetCode = 0 + response.Status = "ok" + response.Echo = string(message.Echo) + + // Convert the members slice to a map + outputMap := structToMap(response) + + log.Printf("get_login_info: %+v\n", outputMap) + + err := client.SendMessage(outputMap) + if err != nil { + log.Printf("Error sending message via client: %v", err) + } else { + log.Printf("响应get_login_info: %+v", outputMap) + } + + return +} diff --git a/handlers/get_online_clients.go b/handlers/get_online_clients.go new file mode 100644 index 00000000..6e82aeae --- /dev/null +++ b/handlers/get_online_clients.go @@ -0,0 +1,51 @@ +package handlers + +import ( + "log" + + "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/tencent-connect/botgo/openapi" +) + +type OnlineClientsResponse struct { + Data OnlineClientsData `json:"data"` + Message string `json:"message"` + RetCode int `json:"retcode"` + Status string `json:"status"` + Echo interface{} `json:"echo"` +} + +type OnlineClientsData struct { + Clients []interface{} `json:"clients"` // It seems you want an empty array for clients + TinyID int64 `json:"tiny_id"` +} + +func init() { + callapi.RegisterHandler("get_online_clients", getOnlineClients) +} + +func getOnlineClients(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { + + var response OnlineClientsResponse + + response.Data = OnlineClientsData{ + Clients: make([]interface{}, 0), // Empty array + TinyID: 0, + } + response.Message = "" + response.RetCode = 0 + response.Status = "ok" + response.Echo = string(message.Echo) + + // Convert the members slice to a map + outputMap := structToMap(response) + + log.Printf("get_online_clients: %+v\n", outputMap) + + err := client.SendMessage(outputMap) + if err != nil { + log.Printf("Error sending message via client: %v", err) + } else { + log.Printf("响应get_online_clients: %+v", outputMap) + } +} diff --git a/handlers/get_version_info.go b/handlers/get_version_info.go new file mode 100644 index 00000000..4431a6b2 --- /dev/null +++ b/handlers/get_version_info.go @@ -0,0 +1,73 @@ +package handlers + +import ( + "log" + + "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/tencent-connect/botgo/openapi" +) + +type VersionInfoResponse struct { + Data VersionData `json:"data"` + Message string `json:"message"` + RetCode int `json:"retcode"` + Status string `json:"status"` + Echo interface{} `json:"echo"` +} + +type VersionData struct { + AppFullName string `json:"app_full_name"` + AppName string `json:"app_name"` + AppVersion string `json:"app_version"` + CoolQDirectory string `json:"coolq_directory"` + CoolQEdition string `json:"coolq_edition"` + GoCQHTTP bool `json:"go-cqhttp"` + PluginBuildConfiguration string `json:"plugin_build_configuration"` + PluginBuildNumber int `json:"plugin_build_number"` + PluginVersion string `json:"plugin_version"` + ProtocolName int `json:"protocol_name"` + ProtocolVersion string `json:"protocol_version"` + RuntimeOS string `json:"runtime_os"` + RuntimeVersion string `json:"runtime_version"` + Version string `json:"version"` +} + +func init() { + callapi.RegisterHandler("get_version_info", getVersionInfo) +} + +func getVersionInfo(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { + + var response VersionInfoResponse + + response.Data = VersionData{ + AppFullName: "gensokyo", + AppName: "gensokyo", + AppVersion: "v1.0.0", + CoolQDirectory: "", + CoolQEdition: "pro", + GoCQHTTP: true, + PluginBuildConfiguration: "release", + PluginBuildNumber: 99, + PluginVersion: "4.15.0", + ProtocolName: 4, + ProtocolVersion: "v11", + RuntimeOS: "windows", + RuntimeVersion: "go1.20.2", + Version: "v1.0.0", + } + response.Message = "" + response.RetCode = 0 + response.Status = "ok" + response.Echo = string(message.Echo) // Directly assign the string value + + // Convert the members slice to a map + outputMap := structToMap(response) + + log.Printf("get_version_info: %+v/n", outputMap) + + err := client.SendMessage(outputMap) + if err != nil { + log.Printf("Error sending message via client: %v", err) + } +} diff --git a/handlers/message_parser.go b/handlers/message_parser.go index 58dc8a31..3c98a62d 100644 --- a/handlers/message_parser.go +++ b/handlers/message_parser.go @@ -7,6 +7,7 @@ import ( "strings" "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/tencent-connect/botgo/dto" ) var BotID string @@ -116,6 +117,7 @@ func transformMessageText(messageText string) string { }) } +// 处理at和其他定形文到onebotv11格式(cq码) func RevertTransformedText(messageText string) string { // Trim leading and trailing spaces messageText = strings.TrimSpace(messageText) @@ -134,3 +136,77 @@ func RevertTransformedText(messageText string) string { return m }) } + +// 将收到的data.content转换为message segment todo,群场景不支持受图片,频道场景的图片可以拼一下 +func ConvertToSegmentedMessage(data interface{}) []map[string]interface{} { + // 强制类型转换,获取Message结构 + var msg *dto.Message + switch v := data.(type) { + case *dto.WSGroupATMessageData: + msg = (*dto.Message)(v) + case *dto.WSATMessageData: + msg = (*dto.Message)(v) + case *dto.WSMessageData: + msg = (*dto.Message)(v) + case *dto.WSDirectMessageData: + msg = (*dto.Message)(v) + case *dto.WSC2CMessageData: + msg = (*dto.Message)(v) + default: + return nil + } + + var messageSegments []map[string]interface{} + + // 处理Attachments字段来构建图片消息 + for _, attachment := range msg.Attachments { + imageFileMD5 := attachment.FileName + for _, ext := range []string{"{", "}", ".png", ".jpg", ".gif", "-"} { + imageFileMD5 = strings.ReplaceAll(imageFileMD5, ext, "") + } + imageSegment := map[string]interface{}{ + "type": "image", + "data": map[string]interface{}{ + "file": imageFileMD5 + ".image", + "subType": "0", + "url": attachment.URL, + }, + } + messageSegments = append(messageSegments, imageSegment) + + // 在msg.Content中替换旧的图片链接 + newImagePattern := "[CQ:image,file=" + attachment.URL + "]" + msg.Content = msg.Content + newImagePattern + } + + // 使用正则表达式查找所有的[@数字]格式 + r := regexp.MustCompile(`<@!(\d+)>`) + atMatches := r.FindAllStringSubmatch(msg.Content, -1) + + for _, match := range atMatches { + // 构建at部分的映射并加入到messageSegments + atSegment := map[string]interface{}{ + "type": "at", + "data": map[string]interface{}{ + "qq": match[1], + }, + } + messageSegments = append(messageSegments, atSegment) + + // 从原始内容中移除at部分 + msg.Content = strings.Replace(msg.Content, match[0], "", 1) + } + + // 如果还有其他内容,那么这些内容被视为文本部分 + if msg.Content != "" { + textSegment := map[string]interface{}{ + "type": "text", + "data": map[string]interface{}{ + "text": msg.Content, + }, + } + messageSegments = append(messageSegments, textSegment) + } + + return messageSegments +} diff --git a/handlers/send_group_msg.go b/handlers/send_group_msg.go index 18115504..76091c21 100644 --- a/handlers/send_group_msg.go +++ b/handlers/send_group_msg.go @@ -27,12 +27,12 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap //如果获取不到 就用user_id获取信息类型 if msgType == "" { - msgType = GetMessageTypeByUserid(client.GetAppID(), message.Params.UserID) + msgType = GetMessageTypeByUserid(client.GetAppIDStr(), message.Params.UserID) } //如果获取不到 就用group_id获取信息类型 if msgType == "" { - msgType = GetMessageTypeByGroupid(client.GetAppID(), message.Params.GroupID) + msgType = GetMessageTypeByGroupid(client.GetAppIDStr(), message.Params.GroupID) } switch msgType { @@ -50,7 +50,7 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap log.Println("foundItems:", foundItems) // 如果messageID为空,通过函数获取 if messageID == "" { - messageID = GetMessageIDByUseridOrGroupid(client.GetAppID(), message.Params.GroupID) + messageID = GetMessageIDByUseridOrGroupid(client.GetAppIDStr(), message.Params.GroupID) log.Println("通过GetMessageIDByUserid函数获取的message_id:", messageID) } @@ -64,7 +64,7 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap // 优先发送文本信息 if messageText != "" { - groupReply := generateMessage(messageID, nil, messageText) + groupReply := generateGroupMessage(messageID, nil, messageText) // 进行类型断言 groupMessage, ok := groupReply.(*dto.MessageToCreate) @@ -85,7 +85,7 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap var singleItem = make(map[string][]string) singleItem[key] = urls - groupReply := generateMessage(messageID, singleItem, "") + groupReply := generateGroupMessage(messageID, singleItem, "") // 进行类型断言 richMediaMessage, ok := groupReply.(*dto.RichMediaMessage) @@ -123,16 +123,8 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap handleSendGuildChannelPrivateMsg(client, api, apiv2, message, &value, &message.Params.ChannelID) case "group_private": //用userid还原出openid 这是虚拟成群的群聊私聊信息 - //todo - message.Params.ChannelID = message.Params.GroupID.(string) - //读取ini 通过ChannelID取回之前储存的guild_id - value, err := idmap.ReadConfigv2(message.Params.ChannelID, "guild_id") - if err != nil { - log.Printf("Error reading config: %v", err) - return - } - message.Params.GroupID = value - handleSendGuildChannelMsg(client, api, apiv2, message) + message.Params.UserID = message.Params.GroupID.(string) + handleSendPrivateMsg(client, api, apiv2, message) default: log.Printf("Unknown message type: %s", msgType) } diff --git a/handlers/send_guild_channel_msg.go b/handlers/send_guild_channel_msg.go index 99085d24..71e47fe4 100644 --- a/handlers/send_guild_channel_msg.go +++ b/handlers/send_guild_channel_msg.go @@ -25,12 +25,12 @@ func handleSendGuildChannelMsg(client callapi.Client, api openapi.OpenAPI, apiv2 //如果获取不到 就用user_id获取信息类型 if msgType == "" { - msgType = GetMessageTypeByUserid(client.GetAppID(), message.Params.UserID) + msgType = GetMessageTypeByUserid(client.GetAppIDStr(), message.Params.UserID) } //如果获取不到 就用group_id获取信息类型 if msgType == "" { - appID := client.GetAppID() + appID := client.GetAppIDStr() groupID := message.Params.GroupID fmt.Printf("appID: %s, GroupID: %v\n", appID, groupID) diff --git a/handlers/send_msg.go b/handlers/send_msg.go index 4c4caf01..e20753d4 100644 --- a/handlers/send_msg.go +++ b/handlers/send_msg.go @@ -27,7 +27,7 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope //如果获取不到 就用group_id获取信息类型 if msgType == "" { - appID := client.GetAppID() + appID := client.GetAppIDStr() groupID := message.Params.GroupID fmt.Printf("appID: %s, GroupID: %v\n", appID, groupID) @@ -37,7 +37,7 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope //如果获取不到 就用user_id获取信息类型 if msgType == "" { - msgType = GetMessageTypeByUserid(client.GetAppID(), message.Params.UserID) + msgType = GetMessageTypeByUserid(client.GetAppIDStr(), message.Params.UserID) } switch msgType { @@ -55,7 +55,7 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope log.Println("foundItems:", foundItems) // 如果messageID为空,通过函数获取 if messageID == "" { - messageID = GetMessageIDByUseridOrGroupid(client.GetAppID(), message.Params.GroupID) + messageID = GetMessageIDByUseridOrGroupid(client.GetAppIDStr(), message.Params.GroupID) log.Println("通过GetMessageIDByUserid函数获取的message_id:", messageID) } @@ -143,17 +143,62 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope handleSendGuildChannelPrivateMsg(client, api, apiv2, message, GuildidPtr, channelIDPtr) case "group_private": - //用userid还原出openid 这是虚拟成群的群聊私聊信息 - //todo - message.Params.ChannelID = message.Params.GroupID.(string) - //读取ini 通过ChannelID取回之前储存的guild_id - value, err := idmap.ReadConfigv2(message.Params.ChannelID, "guild_id") + //私聊信息 + //还原真实的userid + UserID, err := idmap.RetrieveRowByIDv2(message.Params.UserID.(string)) if err != nil { log.Printf("Error reading config: %v", err) return } - message.Params.GroupID = value - handleSendGuildChannelMsg(client, api, apiv2, message) + + // 解析消息内容 + messageText, foundItems := parseMessageContent(message.Params) + + // 获取 echo 的值 + echostr := string(message.Echo) + + // 使用 echo 获取消息ID + messageID := echo.GetMsgIDByKey(echostr) + log.Println("私聊发信息对应的message_id:", messageID) + log.Println("私聊发信息messageText:", messageText) + log.Println("foundItems:", foundItems) + + // 优先发送文本信息 + if messageText != "" { + groupReply := generateMessage(messageID, nil, messageText) + + // 进行类型断言 + groupMessage, ok := groupReply.(*dto.MessageToCreate) + if !ok { + log.Println("Error: Expected MessageToCreate type.") + return + } + + groupMessage.Timestamp = time.Now().Unix() // 设置时间戳 + _, err := apiv2.PostC2CMessage(context.TODO(), UserID, groupMessage) + if err != nil { + log.Printf("发送文本私聊信息失败: %v", err) + } + } + + // 遍历 foundItems 并发送每种信息 + for key, urls := range foundItems { + var singleItem = make(map[string][]string) + singleItem[key] = urls + + groupReply := generateMessage(messageID, singleItem, "") + + // 进行类型断言 + richMediaMessage, ok := groupReply.(*dto.RichMediaMessage) + if !ok { + log.Printf("Error: Expected RichMediaMessage type for key %s.", key) + continue + } + _, err := apiv2.PostC2CMessage(context.TODO(), UserID, richMediaMessage) + if err != nil { + log.Printf("发送 %s 私聊信息失败: %v", key, err) + } + } default: log.Printf("1Unknown message type: %s", msgType) } diff --git a/handlers/send_private_msg.go b/handlers/send_private_msg.go index 2d52727c..68423f61 100644 --- a/handlers/send_private_msg.go +++ b/handlers/send_private_msg.go @@ -25,6 +25,14 @@ func handleSendPrivateMsg(client callapi.Client, api openapi.OpenAPI, apiv2 open switch msgType { case "group_private": + //私聊信息 + //还原真实的userid + UserID, err := idmap.RetrieveRowByIDv2(message.Params.UserID.(string)) + if err != nil { + log.Printf("Error reading config: %v", err) + return + } + // 解析消息内容 messageText, foundItems := parseMessageContent(message.Params) @@ -33,18 +41,10 @@ func handleSendPrivateMsg(client callapi.Client, api openapi.OpenAPI, apiv2 open // 使用 echo 获取消息ID messageID := echo.GetMsgIDByKey(echostr) - log.Println("群组发信息对应的message_id:", messageID) - log.Println("群组发信息messageText:", messageText) + log.Println("私聊发信息对应的message_id:", messageID) + log.Println("私聊发信息messageText:", messageText) log.Println("foundItems:", foundItems) - //通过bolt数据库还原真实的GroupID - originalGroupID, err := idmap.RetrieveRowByIDv2(message.Params.GroupID.(string)) - if err != nil { - log.Printf("Error retrieving original GroupID: %v", err) - return - } - message.Params.GroupID = originalGroupID - // 优先发送文本信息 if messageText != "" { groupReply := generatePrivateMessage(messageID, nil, messageText) @@ -53,17 +53,17 @@ func handleSendPrivateMsg(client callapi.Client, api openapi.OpenAPI, apiv2 open groupMessage, ok := groupReply.(*dto.MessageToCreate) if !ok { log.Println("Error: Expected MessageToCreate type.") - return // 或其他错误处理 + return } groupMessage.Timestamp = time.Now().Unix() // 设置时间戳 - _, err := apiv2.PostGroupMessage(context.TODO(), message.Params.GroupID.(string), groupMessage) + _, err := apiv2.PostC2CMessage(context.TODO(), UserID, groupMessage) if err != nil { - log.Printf("发送文本群组信息失败: %v", err) + log.Printf("发送文本私聊信息失败: %v", err) } } - // 遍历foundItems并发送每种信息 + // 遍历 foundItems 并发送每种信息 for key, urls := range foundItems { var singleItem = make(map[string][]string) singleItem[key] = urls @@ -74,13 +74,11 @@ func handleSendPrivateMsg(client callapi.Client, api openapi.OpenAPI, apiv2 open richMediaMessage, ok := groupReply.(*dto.RichMediaMessage) if !ok { log.Printf("Error: Expected RichMediaMessage type for key %s.", key) - continue // 跳过这个项,继续下一个 + continue } - - //richMediaMessage.Timestamp = time.Now().Unix() // 设置时间戳 - _, err := apiv2.PostGroupMessage(context.TODO(), message.Params.GroupID.(string), richMediaMessage) + _, err := apiv2.PostC2CMessage(context.TODO(), UserID, richMediaMessage) if err != nil { - log.Printf("发送 %s 信息失败: %v", key, err) + log.Printf("发送 %s 私聊信息失败: %v", key, err) } } case "guild_private": @@ -151,7 +149,7 @@ func handleSendGuildChannelPrivateMsg(client callapi.Client, api openapi.OpenAPI log.Println("foundItems:", foundItems) // 如果messageID为空,通过函数获取 if messageID == "" { - messageID = GetMessageIDByUseridOrGroupid(client.GetAppID(), message.Params.UserID) + messageID = GetMessageIDByUseridOrGroupid(client.GetAppIDStr(), message.Params.UserID) log.Println("通过GetMessageIDByUserid函数获取的message_id:", messageID) } diff --git a/handlers/set_group_ban.go b/handlers/set_group_ban.go new file mode 100644 index 00000000..affb142b --- /dev/null +++ b/handlers/set_group_ban.go @@ -0,0 +1,65 @@ +package handlers + +import ( + "context" + "log" + "strconv" + + "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/hoshinonyaruko/gensokyo/idmap" + "github.com/tencent-connect/botgo/dto" + "github.com/tencent-connect/botgo/openapi" +) + +func init() { + callapi.RegisterHandler("get_group_ban", setGroupBan) +} + +func setGroupBan(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { + + // 从message中获取group_id和UserID + groupID := message.Params.GroupID.(string) + receivedUserID := message.Params.UserID.(string) + + // 根据group_id读取guild_id + guildID, err := idmap.ReadConfigv2(groupID, "guild_id") + if err != nil { + log.Printf("Error reading config for guild_id: %v", err) + return + } + + // 根据UserID读取真实的userid + realUserID, err := idmap.RetrieveRowByIDv2(receivedUserID) + if err != nil { + log.Printf("Error reading real userID: %v", err) + return + } + + // 读取消息类型 + msgType, err := idmap.ReadConfigv2(groupID, "type") + if err != nil { + log.Printf("Error reading config for message type: %v", err) + return + } + + // 根据消息类型进行操作 + switch msgType { + case "group": + log.Printf("setGroupBan(频道): 目前暂未开放该能力") + return + case "private": + log.Printf("setGroupBan(频道): 目前暂未适配私聊虚拟群场景的禁言能力") + return + case "guild": + duration := strconv.Itoa(message.Params.Duration) + mute := &dto.UpdateGuildMute{ + MuteSeconds: duration, + UserIDs: []string{realUserID}, + } + err := api.MemberMute(context.TODO(), guildID, realUserID, mute) + if err != nil { + log.Printf("Error muting member: %v", err) + } + return + } +} diff --git a/handlers/set_group_whole_ban.go b/handlers/set_group_whole_ban.go new file mode 100644 index 00000000..771dae55 --- /dev/null +++ b/handlers/set_group_whole_ban.go @@ -0,0 +1,60 @@ +package handlers + +import ( + "context" + "log" + + "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/hoshinonyaruko/gensokyo/idmap" + "github.com/tencent-connect/botgo/dto" + "github.com/tencent-connect/botgo/openapi" +) + +func init() { + callapi.RegisterHandler("get_group_whole_ban", setGroupBan) +} + +func setGroupWholeBan(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { + // 从message中获取group_id + groupID := message.Params.GroupID.(string) + + // 根据group_id读取guild_id + guildID, err := idmap.ReadConfigv2(groupID, "guild_id") + if err != nil { + log.Printf("Error reading config for guild_id: %v", err) + return + } + + // 读取消息类型 + msgType, err := idmap.ReadConfigv2(groupID, "type") + if err != nil { + log.Printf("Error reading config for message type: %v", err) + return + } + + // 根据消息类型进行操作 + switch msgType { + case "group": + log.Printf("setGroupWholeBan(频道): 目前暂未开放该能力") + return + case "private": + log.Printf("setGroupWholeBan(频道): 目前暂未适配私聊虚拟群场景的禁言能力") + return + case "guild": + var duration string + if message.Params.Enable { + duration = "604800" // 7天: 60 * 60 * 24 * 7 onebot的全体禁言只有禁言和解开,先尝试7天 + } else { + duration = "0" + } + + mute := &dto.UpdateGuildMute{ + MuteSeconds: duration, + } + err := api.GuildMute(context.TODO(), guildID, mute) + if err != nil { + log.Printf("Error setting whole guild mute: %v", err) + } + return + } +} diff --git a/idmap/service.go b/idmap/service.go index 554b9a7a..d4f6202f 100644 --- a/idmap/service.go +++ b/idmap/service.go @@ -43,7 +43,7 @@ func CloseDB() { } // 根据a储存b -func StoreIDv2(id string) (int64, error) { +func StoreID(id string) (int64, error) { var newRow int64 err := db.Update(func(tx *bolt.Tx) error { @@ -79,8 +79,8 @@ func StoreIDv2(id string) (int64, error) { return newRow, err } -// StoreIDv2v2 根据a储存b -func StoreIDv2v2(id string) (int64, error) { +// StoreIDv2 根据a储存b +func StoreIDv2(id string) (int64, error) { if config.GetLotusValue() { // 使用网络请求方式 serverDir := config.GetServer_dir() @@ -112,11 +112,11 @@ func StoreIDv2v2(id string) (int64, error) { } // 如果lotus为假,就保持原来的store的方法 - return StoreIDv2(id) + return StoreID(id) } // 根据b得到a -func RetrieveRowByIDv2(rowid string) (string, error) { +func RetrieveRowByID(rowid string) (string, error) { var id string err := db.View(func(tx *bolt.Tx) error { b := tx.Bucket([]byte(BucketName)) @@ -134,8 +134,8 @@ func RetrieveRowByIDv2(rowid string) (string, error) { return id, err } -// RetrieveRowByIDv2v2 根据b得到a -func RetrieveRowByIDv2v2(rowid string) (string, error) { +// RetrieveRowByIDv2 根据b得到a +func RetrieveRowByIDv2(rowid string) (string, error) { if config.GetLotusValue() { // 使用网络请求方式 serverDir := config.GetServer_dir() @@ -167,11 +167,11 @@ func RetrieveRowByIDv2v2(rowid string) (string, error) { } // 如果lotus为假,就保持原来的RetrieveRowByIDv2的方法 - return RetrieveRowByIDv2(rowid) + return RetrieveRowByID(rowid) } // 根据a 以b为类别 储存c -func WriteConfigv2(sectionName, keyName, value string) error { +func WriteConfig(sectionName, keyName, value string) error { return db.Update(func(tx *bolt.Tx) error { b, err := tx.CreateBucketIfNotExists([]byte(ConfigBucket)) if err != nil { @@ -183,8 +183,8 @@ func WriteConfigv2(sectionName, keyName, value string) error { }) } -// WriteConfigv2v2 根据a以b为类别储存c -func WriteConfigv2v2(sectionName, keyName, value string) error { +// WriteConfigv2 根据a以b为类别储存c +func WriteConfigv2(sectionName, keyName, value string) error { if config.GetLotusValue() { // 使用网络请求方式 serverDir := config.GetServer_dir() @@ -213,11 +213,11 @@ func WriteConfigv2v2(sectionName, keyName, value string) error { } // 如果lotus为假,则使用原始方法在本地写入配置 - return WriteConfigv2(sectionName, keyName, value) + return WriteConfig(sectionName, keyName, value) } // 根据a和b取出c -func ReadConfigv2(sectionName, keyName string) (string, error) { +func ReadConfig(sectionName, keyName string) (string, error) { var result string err := db.View(func(tx *bolt.Tx) error { b := tx.Bucket([]byte(ConfigBucket)) @@ -238,8 +238,8 @@ func ReadConfigv2(sectionName, keyName string) (string, error) { return result, err } -// ReadConfigv2v2 根据a和b取出c -func ReadConfigv2v2(sectionName, keyName string) (string, error) { +// ReadConfigv2 根据a和b取出c +func ReadConfigv2(sectionName, keyName string) (string, error) { if config.GetLotusValue() { // 使用网络请求方式 serverDir := config.GetServer_dir() @@ -281,7 +281,7 @@ func ReadConfigv2v2(sectionName, keyName string) (string, error) { } // 如果lotus为假,则使用原始方法在本地读取配置 - return ReadConfigv2(sectionName, keyName) + return ReadConfig(sectionName, keyName) } // 灵感,ini配置文件 diff --git a/main.go b/main.go index 6b5938e3..924bab40 100644 --- a/main.go +++ b/main.go @@ -7,7 +7,6 @@ import ( "log" "os" "os/signal" - "strconv" "syscall" "time" @@ -87,16 +86,16 @@ func main() { apiV2 := botgo.NewOpenAPI(token).WithTimeout(3 * time.Second) // 执行API请求 显示机器人信息 - // me, err := api.Me(ctx) // Adjusted to pass only the context - // if err != nil { - // fmt.Printf("Error fetching bot details: %v\n", err) - // return - // } - // fmt.Printf("Bot details: %+v\n", me) + me, err := api.Me(ctx) // Adjusted to pass only the context + if err != nil { + fmt.Printf("Error fetching bot details: %v\n", err) + return + } + fmt.Printf("Bot details: %+v\n", me) //初始化handlers - //handlers.BotID = me.ID - handlers.BotID = "1234" + handlers.BotID = me.ID + //handlers.BotID = "1234" handlers.AppID = fmt.Sprintf("%d", conf.Settings.AppID) // 获取 websocket 信息 这里用哪一个api获取就是用哪一个api去连接ws @@ -139,8 +138,7 @@ func main() { // 在新的 go 函数中初始化 wsClient go func() { - appIDStr := strconv.FormatUint(conf.Settings.AppID, 10) // Assuming base 10 - wsClient, err := wsclient.NewWebSocketClient(conf.Settings.WsAddress, appIDStr, api, apiV2) + wsClient, err := wsclient.NewWebSocketClient(conf.Settings.WsAddress, conf.Settings.AppID, api, apiV2) if err != nil { fmt.Printf("Error creating WebSocketClient: %v\n", err) close(wsClientChan) // 关闭通道表示不再发送值 @@ -269,7 +267,8 @@ func GroupATMessageEventHandler() event.GroupATMessageEventHandler { // C2CMessageEventHandler 实现处理 群私聊 消息的回调 func C2CMessageEventHandler() event.C2CMessageEventHandler { return func(event *dto.WSPayload, data *dto.WSC2CMessageData) error { - return processor.ProcessC2CMessage(string(event.RawMessage), data) + log.Print("1111") + return processor.ProcessC2CMessage(data) } } diff --git a/wsclient/ws.go b/wsclient/ws.go index 6c01fd48..224259a0 100644 --- a/wsclient/ws.go +++ b/wsclient/ws.go @@ -17,14 +17,19 @@ type WebSocketClient struct { conn *websocket.Conn api openapi.OpenAPI apiv2 openapi.OpenAPI - appid string + appid uint64 } // 获取appid -func (c *WebSocketClient) GetAppID() string { +func (c *WebSocketClient) GetAppID() uint64 { return c.appid } +// 获取appid的字符串形式 +func (c *WebSocketClient) GetAppIDStr() string { + return fmt.Sprintf("%d", c.appid) +} + // 发送json信息给onebot应用端 func (c *WebSocketClient) SendMessage(message map[string]interface{}) error { msgBytes, err := json.Marshal(message) @@ -86,7 +91,7 @@ func truncateMessage(message callapi.ActionMessage, maxLength int) string { } // 发送心跳包 -func (c *WebSocketClient) sendHeartbeat(ctx context.Context, botID string) { +func (c *WebSocketClient) sendHeartbeat(ctx context.Context, botID uint64) { for { select { case <-ctx.Done(): @@ -105,11 +110,11 @@ func (c *WebSocketClient) sendHeartbeat(ctx context.Context, botID string) { } // NewWebSocketClient 创建 WebSocketClient 实例,接受 WebSocket URL、botID 和 openapi.OpenAPI 实例 -func NewWebSocketClient(urlStr string, botID string, api openapi.OpenAPI, apiv2 openapi.OpenAPI) (*WebSocketClient, error) { +func NewWebSocketClient(urlStr string, botID uint64, api openapi.OpenAPI, apiv2 openapi.OpenAPI) (*WebSocketClient, error) { headers := http.Header{ "User-Agent": []string{"CQHttp/4.15.0"}, "X-Client-Role": []string{"Universal"}, - "X-Self-ID": []string{botID}, + "X-Self-ID": []string{fmt.Sprintf("%d", botID)}, } dialer := websocket.Dialer{ From 618561c3e93f2d77e0338582ef95d3a632e60228 Mon Sep 17 00:00:00 2001 From: cosmo Date: Thu, 26 Oct 2023 13:04:28 +0800 Subject: [PATCH 08/36] add action --- .github/workflows/cross_compile.yml | 68 +++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 .github/workflows/cross_compile.yml diff --git a/.github/workflows/cross_compile.yml b/.github/workflows/cross_compile.yml new file mode 100644 index 00000000..a4e4873b --- /dev/null +++ b/.github/workflows/cross_compile.yml @@ -0,0 +1,68 @@ +name: Cross Compile Go Project + +on: + pull_request: + types: [opened, synchronize] + +jobs: + build: + name: Build on ${{ matrix.os }} for ${{ matrix.goarch }} + runs-on: ubuntu-latest + strategy: + matrix: + include: + - os: linux + goarch: amd64 + - os: linux + goarch: 386 + - os: linux + goarch: arm + - os: linux + goarch: arm64 + - os: darwin + goarch: amd64 + - os: darwin + goarch: arm64 + - os: windows + goarch: amd64 + - os: windows + goarch: 386 + - os: android + goarch: arm + - os: android + goarch: arm64 + # ... Add other combinations as needed + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: '1.21.1' # Set to specific Go version. + + - name: Setup Android NDK (only for Android builds) + if: matrix.os == 'android' + run: | + sudo apt-get install -y wget unzip + wget https://dl.google.com/android/repository/android-ndk-r21e-linux-x86_64.zip || exit 1 + unzip android-ndk-r21e-linux-x86_64.zip || exit 1 + export ANDROID_NDK_HOME=$PWD/android-ndk-r21e + echo "ANDROID_NDK_HOME=$ANDROID_NDK_HOME" >> $GITHUB_ENV + + - name: Create output directory + run: mkdir -p output + + - name: Compile Go for target + env: + GOOS: ${{ matrix.os }} + GOARCH: ${{ matrix.goarch }} + run: | + go build -o output/gensokyo-${{ matrix.os }}-${{ matrix.goarch }} + + - name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: gensokyo-${{ matrix.os }}-${{ matrix.goarch }} + path: output/gensokyo-${{ matrix.os }}-${{ matrix.goarch }} From 7e803aa84dd738a16daf89d7384bb928fd612774 Mon Sep 17 00:00:00 2001 From: cosmo Date: Thu, 26 Oct 2023 13:10:11 +0800 Subject: [PATCH 09/36] add action --- .gitignore | 2 - botgo/examples/go.mod | 27 ++++++ botgo/examples/go.sum | 149 ++++++++++++++++++++++++++++++++ botgo/go.mod | 13 +++ botgo/go.sum | 127 ++++++++++++++++++++++++++++ go.mod | 46 ++++++++++ go.sum | 192 ++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 554 insertions(+), 2 deletions(-) create mode 100644 botgo/examples/go.mod create mode 100644 botgo/examples/go.sum create mode 100644 botgo/go.mod create mode 100644 botgo/go.sum create mode 100644 go.mod create mode 100644 go.sum diff --git a/.gitignore b/.gitignore index 4a3dc0c7..6eb03ec0 100644 --- a/.gitignore +++ b/.gitignore @@ -5,8 +5,6 @@ idmap.db.lock idmap.ini # Go specific -go.mod -go.sum *.exe # Ignore channel_temp diff --git a/botgo/examples/go.mod b/botgo/examples/go.mod new file mode 100644 index 00000000..37f80113 --- /dev/null +++ b/botgo/examples/go.mod @@ -0,0 +1,27 @@ +module examples + +go 1.17 + +require ( + github.com/go-redis/redis/v8 v8.11.4 + github.com/google/uuid v1.3.0 + github.com/tencent-connect/botgo v0.0.0-00010101000000-000000000000 + go.uber.org/zap v1.19.1 + gopkg.in/yaml.v2 v2.4.0 +) + +require ( + github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect + github.com/go-resty/resty/v2 v2.6.0 // indirect + github.com/gorilla/websocket v1.4.2 // indirect + github.com/tidwall/gjson v1.9.3 // indirect + github.com/tidwall/match v1.1.1 // indirect + github.com/tidwall/pretty v1.2.0 // indirect + go.uber.org/atomic v1.9.0 // indirect + go.uber.org/multierr v1.7.0 // indirect + golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 // indirect + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect +) + +replace github.com/tencent-connect/botgo => ../ diff --git a/botgo/examples/go.sum b/botgo/examples/go.sum new file mode 100644 index 00000000..88db2035 --- /dev/null +++ b/botgo/examples/go.sum @@ -0,0 +1,149 @@ +github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/go-redis/redis/v8 v8.11.4 h1:kHoYkfZP6+pe04aFTnhDH6GDROa5yJdHJVNxV3F46Tg= +github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Pxt6RJr792+w= +github.com/go-resty/resty/v2 v2.6.0 h1:joIR5PNLM2EFqqESUjCMGXrWmXNHEU9CEiK813oKYS4= +github.com/go-resty/resty/v2 v2.6.0/go.mod h1:PwvJS6hvaPkjtjNg9ph+VrSD92bi5Zq73w/BIH7cC3Q= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.16.0 h1:6gjqkI8iiRHMvdccRJM8rVKjCWk6ZIm6FTm3ddIe4/c= +github.com/onsi/gomega v1.16.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/tidwall/gjson v1.9.3 h1:hqzS9wAHMO+KVBBkLxYdkEeeFHuqr95GfClRLKlgK0E= +github.com/tidwall/gjson v1.9.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= +go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.11-0.20210813005559-691160354723 h1:sHOAIxRGBp443oHZIPB+HsUGaksVCXVQENPxwTfQdH4= +go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.7.0 h1:zaiO/rmgFjbmCXdSYJWQcdvOCsthmdaHfr3Gm2Kx4Ec= +go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +go.uber.org/zap v1.19.1 h1:ue41HOKd1vGURxrmeKIgELGb3jPW9DMUDGtsinblHwI= +go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 h1:DzZ89McO9/gWPsQXS/FVKAlG02ZjaQ6AlZRBimEYOd0= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/botgo/go.mod b/botgo/go.mod new file mode 100644 index 00000000..34d76325 --- /dev/null +++ b/botgo/go.mod @@ -0,0 +1,13 @@ +module github.com/tencent-connect/botgo + +go 1.16 + +require ( + github.com/go-redis/redis/v8 v8.11.5 + github.com/go-resty/resty/v2 v2.6.0 + github.com/google/uuid v1.3.1 + github.com/gorilla/websocket v1.4.2 + github.com/stretchr/testify v1.7.0 + github.com/tidwall/gjson v1.9.3 + gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c +) diff --git a/botgo/go.sum b/botgo/go.sum new file mode 100644 index 00000000..4f951cd4 --- /dev/null +++ b/botgo/go.sum @@ -0,0 +1,127 @@ +github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= +github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= +github.com/go-resty/resty/v2 v2.6.0 h1:joIR5PNLM2EFqqESUjCMGXrWmXNHEU9CEiK813oKYS4= +github.com/go-resty/resty/v2 v2.6.0/go.mod h1:PwvJS6hvaPkjtjNg9ph+VrSD92bi5Zq73w/BIH7cC3Q= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= +github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/tidwall/gjson v1.9.3 h1:hqzS9wAHMO+KVBBkLxYdkEeeFHuqr95GfClRLKlgK0E= +github.com/tidwall/gjson v1.9.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 h1:DzZ89McO9/gWPsQXS/FVKAlG02ZjaQ6AlZRBimEYOd0= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/go.mod b/go.mod new file mode 100644 index 00000000..ae3a48a8 --- /dev/null +++ b/go.mod @@ -0,0 +1,46 @@ +module github.com/hoshinonyaruko/gensokyo + +go 1.21.1 + +require ( + github.com/boltdb/bolt v1.3.1 + github.com/gin-gonic/gin v1.9.1 + github.com/gorilla/websocket v1.4.2 + github.com/tencent-connect/botgo v0.1.6 + gopkg.in/ini.v1 v1.67.0 + gopkg.in/yaml.v3 v3.0.1 +) + +replace github.com/tencent-connect/botgo => ./botgo + +require ( + github.com/TheTitanrain/w32 v0.0.0-20180517000239-4f5cfb03fabf // indirect + github.com/bytedance/sonic v1.9.1 // indirect + github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect + github.com/gabriel-vasile/mimetype v1.4.2 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.14.0 // indirect + github.com/go-resty/resty/v2 v2.6.0 // indirect + github.com/goccy/go-json v0.10.2 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.2.4 // indirect + github.com/leodido/go-urn v1.2.4 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/pelletier/go-toml/v2 v2.0.8 // indirect + github.com/sqweek/dialog v0.0.0-20220809060634-e981b270ebbf // indirect + github.com/tidwall/gjson v1.9.3 // indirect + github.com/tidwall/match v1.1.1 // indirect + github.com/tidwall/pretty v1.2.0 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/ugorji/go/codec v1.2.11 // indirect + golang.org/x/arch v0.3.0 // indirect + golang.org/x/crypto v0.9.0 // indirect + golang.org/x/net v0.10.0 // indirect + golang.org/x/sys v0.8.0 // indirect + golang.org/x/text v0.9.0 // indirect + google.golang.org/protobuf v1.30.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 00000000..1bed39fa --- /dev/null +++ b/go.sum @@ -0,0 +1,192 @@ +github.com/TheTitanrain/w32 v0.0.0-20180517000239-4f5cfb03fabf h1:FPsprx82rdrX2jiKyS17BH6IrTmUBYqZa/CXT4uvb+I= +github.com/TheTitanrain/w32 v0.0.0-20180517000239-4f5cfb03fabf/go.mod h1:peYoMncQljjNS6tZwI9WVyQB3qZS6u79/N3mBOcnd3I= +github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4= +github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= +github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= +github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= +github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= +github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams= +github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= +github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= +github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.14.0 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg/+t63MyGU2n5js= +github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= +github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= +github.com/go-resty/resty/v2 v2.6.0 h1:joIR5PNLM2EFqqESUjCMGXrWmXNHEU9CEiK813oKYS4= +github.com/go-resty/resty/v2 v2.6.0/go.mod h1:PwvJS6hvaPkjtjNg9ph+VrSD92bi5Zq73w/BIH7cC3Q= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= +github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= +github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs= +github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= +github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/sqweek/dialog v0.0.0-20220809060634-e981b270ebbf h1:pCxn3BCfu8n8VUhYl4zS1BftoZoYY0J4qVF3dqAQ4aU= +github.com/sqweek/dialog v0.0.0-20220809060634-e981b270ebbf/go.mod h1:/qNPSY91qTz/8TgHEMioAUc6q7+3SOybeKczHMXFcXw= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/tidwall/gjson v1.9.3 h1:hqzS9wAHMO+KVBBkLxYdkEeeFHuqr95GfClRLKlgK0E= +github.com/tidwall/gjson v1.9.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= +github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k= +golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= From ece4ceffd06b630fd8997002e0736db66d36c3a9 Mon Sep 17 00:00:00 2001 From: cosmo Date: Thu, 26 Oct 2023 13:13:17 +0800 Subject: [PATCH 10/36] add action --- readme.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/readme.md b/readme.md index 85b391ef..f0eb76a7 100644 --- a/readme.md +++ b/readme.md @@ -115,11 +115,11 @@ todo,正在施工中 | /send_private_msg√ | [发送私聊消息] | | /send_group_msg√ | [发送群消息] | | /send_guild_channel_msg√ | [发送频道消息] | -| /send_msg | [发送消息] | +| /send_msg√ | [发送消息] | | /delete_msg | [撤回信息] | | /set_group_kick | [群组踢人] | -| /set_group_ban | [群组单人禁言] | -| /set_group_whole_ban | [群组全员禁言] | +| /set_group_ban√ | [群组单人禁言] | +| /set_group_whole_ban√ | [群组全员禁言] | | /set_group_admin | [群组设置管理员] | | /set_group_card | [设置群名片(群备注)] | | /set_group_name | [设置群名] | @@ -127,17 +127,17 @@ todo,正在施工中 | /set_group_special_title | [设置群组专属头衔] | | /set_friend_add_request | [处理加好友请求] | | /set_group_add_request | [处理加群请求/邀请] | -| /get_login_info | [获取登录号信息] | +| /get_login_info√ | [获取登录号信息] | | /get_stranger_info | [获取陌生人信息] | -| /get_friend_list | [获取好友列表] | +| /get_friend_list√ | [获取好友列表] | | /get_group_info√ | [获取群/频道信息] | -| /get_group_list | [获取群列表] | -| /get_group_member_info | [获取群成员信息] | -| /get_group_member_list | [获取群成员列表] | +| /get_group_list√ | [获取群列表] | +| /get_group_member_info√ | [获取群成员信息] | +| /get_group_member_list√ | [获取群成员列表] | | /get_group_honor_info | [获取群荣誉信息] | -| /can_send_image | [检查是否可以发送图片] | +| /can_send_image√ | [检查是否可以发送图片] | | /can_send_record | [检查是否可以发送语音] | -| /get_version_info | [获取版本信息] | +| /get_version_info√ | [获取版本信息] | | /set_restart | [重启 gensokyo] | | /.handle_quick_operation | [对事件执行快速操作] | From f864a50c7134d2d065fcdbfbf0579e64f5f1baa6 Mon Sep 17 00:00:00 2001 From: cosmo Date: Thu, 26 Oct 2023 13:17:33 +0800 Subject: [PATCH 11/36] fixbug --- main.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index 924bab40..b95be7a7 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,7 @@ package main import ( + "bufio" "context" "errors" "fmt" @@ -18,7 +19,6 @@ import ( "github.com/hoshinonyaruko/gensokyo/wsclient" "github.com/gin-gonic/gin" - "github.com/sqweek/dialog" "github.com/tencent-connect/botgo" "github.com/tencent-connect/botgo/dto" "github.com/tencent-connect/botgo/event" @@ -42,14 +42,15 @@ func NewProcessor(api openapi.OpenAPI, apiv2 openapi.OpenAPI, settings *config.S func main() { if _, err := os.Stat("config.yml"); os.IsNotExist(err) { - // 如果config.yml不存在 err = os.WriteFile("config.yml", []byte(configTemplate), 0644) if err != nil { fmt.Println("Error writing config.yml:", err) return } - dialog.Message("%s", "请配置config.yml然后再次运行.").Title("配置提示").Info() + fmt.Println("请配置config.yml然后再次运行.") + fmt.Print("按下 Enter 继续...") + bufio.NewReader(os.Stdin).ReadBytes('\n') os.Exit(0) } From 4564731703d3fa8d546b7e1f99ba484eb824ce77 Mon Sep 17 00:00:00 2001 From: cosmo Date: Thu, 26 Oct 2023 17:20:44 +0800 Subject: [PATCH 12/36] add wss --- Processor/ProcessC2CMessage.go | 18 ++++++ Processor/ProcessChannelDirectMessage.go | 35 ++++++++++++ Processor/ProcessGroupMessage.go | 17 ++++++ Processor/ProcessGuildATMessage.go | 35 ++++++++++++ Processor/ProcessGuildNormalMessage.go | 35 ++++++++++++ Processor/Processor.go | 1 + botgo/token/authtoken.go | 2 +- botgo/token/token.go | 2 +- config/config.go | 26 +++++++++ config_template.go | 2 + config_template.yml | 4 +- handlers/get_group_info.go | 20 ++++--- handlers/get_group_member_list.go | 73 ++++++++++++++++++++++-- handlers/send_group_msg_async.go | 9 +++ handlers/send_msg_async.go | 9 +++ handlers/send_private_msg_async.go | 9 +++ wsclient/ws.go | 8 +++ 17 files changed, 289 insertions(+), 16 deletions(-) create mode 100644 handlers/send_group_msg_async.go create mode 100644 handlers/send_msg_async.go create mode 100644 handlers/send_private_msg_async.go diff --git a/Processor/ProcessC2CMessage.go b/Processor/ProcessC2CMessage.go index 72eeda07..d5fcb301 100644 --- a/Processor/ProcessC2CMessage.go +++ b/Processor/ProcessC2CMessage.go @@ -135,6 +135,24 @@ func (p *Processor) ProcessC2CMessage(data *dto.WSC2CMessageData) error { Avatar: "", Echo: echostr, } + // 获取MasterID数组 + masterIDs := config.GetMasterID() + + // 判断userid64是否在masterIDs数组里 + isMaster := false + for _, id := range masterIDs { + if strconv.FormatInt(userid64, 10) == id { + isMaster = true + break + } + } + + // 根据isMaster的值为groupMsg的Sender赋值role字段 + if isMaster { + groupMsg.Sender.Role = "owner" + } else { + groupMsg.Sender.Role = "member" + } //将当前s和appid和message进行映射 echo.AddMsgID(AppIDString, s, data.ID) echo.AddMsgType(AppIDString, s, "group_private") diff --git a/Processor/ProcessChannelDirectMessage.go b/Processor/ProcessChannelDirectMessage.go index 51181ffd..ebf08932 100644 --- a/Processor/ProcessChannelDirectMessage.go +++ b/Processor/ProcessChannelDirectMessage.go @@ -142,7 +142,24 @@ func (p *Processor) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) e Avatar: data.Author.Avatar, Echo: echostr, } + // 获取MasterID数组 + masterIDs := config.GetMasterID() + // 判断userid64是否在masterIDs数组里 + isMaster := false + for _, id := range masterIDs { + if strconv.FormatInt(userid64, 10) == id { + isMaster = true + break + } + } + + // 根据isMaster的值为groupMsg的Sender赋值role字段 + if isMaster { + onebotMsg.Sender.Role = "owner" + } else { + onebotMsg.Sender.Role = "member" + } //将当前s和appid和message进行映射 echo.AddMsgID(AppIDString, s, data.ID) //通过echo始终得知真实的事件类型,来对应调用正确的api @@ -217,6 +234,24 @@ func (p *Processor) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) e Avatar: data.Author.Avatar, Echo: echostr, } + // 获取MasterID数组 + masterIDs := config.GetMasterID() + + // 判断userid64是否在masterIDs数组里 + isMaster := false + for _, id := range masterIDs { + if strconv.FormatInt(userid64, 10) == id { + isMaster = true + break + } + } + + // 根据isMaster的值为groupMsg的Sender赋值role字段 + if isMaster { + groupMsg.Sender.Role = "owner" + } else { + groupMsg.Sender.Role = "member" + } //将当前s和appid和message进行映射 echo.AddMsgID(AppIDString, s, data.ID) echo.AddMsgType(AppIDString, s, "guild_private") diff --git a/Processor/ProcessGroupMessage.go b/Processor/ProcessGroupMessage.go index 5610b493..c414ef35 100644 --- a/Processor/ProcessGroupMessage.go +++ b/Processor/ProcessGroupMessage.go @@ -75,7 +75,24 @@ func (p *Processor) ProcessGroupMessage(data *dto.WSGroupATMessageData) error { Avatar: "", Echo: echostr, } + // 获取MasterID数组 + masterIDs := config.GetMasterID() + // 判断userid64是否在masterIDs数组里 + isMaster := false + for _, id := range masterIDs { + if strconv.FormatInt(userid64, 10) == id { + isMaster = true + break + } + } + + // 根据isMaster的值为groupMsg的Sender赋值role字段 + if isMaster { + groupMsg.Sender.Role = "owner" + } else { + groupMsg.Sender.Role = "member" + } // 将当前s和appid和message进行映射 echo.AddMsgID(AppIDString, s, data.ID) echo.AddMsgType(AppIDString, s, "group") diff --git a/Processor/ProcessGuildATMessage.go b/Processor/ProcessGuildATMessage.go index c3de90c5..80e40c35 100644 --- a/Processor/ProcessGuildATMessage.go +++ b/Processor/ProcessGuildATMessage.go @@ -65,7 +65,24 @@ func (p *Processor) ProcessGuildATMessage(data *dto.WSATMessageData) error { Avatar: data.Author.Avatar, Echo: echostr, } + // 获取MasterID数组 + masterIDs := config.GetMasterID() + // 判断userid64是否在masterIDs数组里 + isMaster := false + for _, id := range masterIDs { + if strconv.FormatInt(userid64, 10) == id { + isMaster = true + break + } + } + + // 根据isMaster的值为groupMsg的Sender赋值role字段 + if isMaster { + onebotMsg.Sender.Role = "owner" + } else { + onebotMsg.Sender.Role = "member" + } //将当前s和appid和message进行映射 echo.AddMsgID(AppIDString, s, data.ID) echo.AddMsgType(AppIDString, s, "guild") @@ -143,6 +160,24 @@ func (p *Processor) ProcessGuildATMessage(data *dto.WSATMessageData) error { Avatar: data.Author.Avatar, Echo: echostr, } + // 获取MasterID数组 + masterIDs := config.GetMasterID() + + // 判断userid64是否在masterIDs数组里 + isMaster := false + for _, id := range masterIDs { + if strconv.FormatInt(userid64, 10) == id { + isMaster = true + break + } + } + + // 根据isMaster的值为groupMsg的Sender赋值role字段 + if isMaster { + groupMsg.Sender.Role = "owner" + } else { + groupMsg.Sender.Role = "member" + } //将当前s和appid和message进行映射 echo.AddMsgID(AppIDString, s, data.ID) echo.AddMsgType(AppIDString, s, "guild") diff --git a/Processor/ProcessGuildNormalMessage.go b/Processor/ProcessGuildNormalMessage.go index 931b02ac..011d96e9 100644 --- a/Processor/ProcessGuildNormalMessage.go +++ b/Processor/ProcessGuildNormalMessage.go @@ -64,7 +64,24 @@ func (p *Processor) ProcessGuildNormalMessage(data *dto.WSMessageData) error { Avatar: data.Author.Avatar, Echo: echostr, } + // 获取MasterID数组 + masterIDs := config.GetMasterID() + // 判断userid64是否在masterIDs数组里 + isMaster := false + for _, id := range masterIDs { + if strconv.FormatInt(userid64, 10) == id { + isMaster = true + break + } + } + + // 根据isMaster的值为groupMsg的Sender赋值role字段 + if isMaster { + onebotMsg.Sender.Role = "owner" + } else { + onebotMsg.Sender.Role = "member" + } //将当前s和appid和message进行映射 echo.AddMsgID(AppIDString, s, data.ID) echo.AddMsgType(AppIDString, s, "guild") @@ -142,6 +159,24 @@ func (p *Processor) ProcessGuildNormalMessage(data *dto.WSMessageData) error { Avatar: data.Author.Avatar, Echo: echostr, } + // 获取MasterID数组 + masterIDs := config.GetMasterID() + + // 判断userid64是否在masterIDs数组里 + isMaster := false + for _, id := range masterIDs { + if strconv.FormatInt(userid64, 10) == id { + isMaster = true + break + } + } + + // 根据isMaster的值为groupMsg的Sender赋值role字段 + if isMaster { + groupMsg.Sender.Role = "owner" + } else { + groupMsg.Sender.Role = "member" + } //将当前s和appid和message进行映射 echo.AddMsgID(AppIDString, s, data.ID) echo.AddMsgType(AppIDString, s, "guild") diff --git a/Processor/Processor.go b/Processor/Processor.go index 5e2064cc..ceada563 100644 --- a/Processor/Processor.go +++ b/Processor/Processor.go @@ -26,6 +26,7 @@ type Sender struct { Nickname string `json:"nickname"` TinyID string `json:"tiny_id"` UserID int64 `json:"user_id"` + Role string `json:"role,omitempty"` } // 频道信息事件 diff --git a/botgo/token/authtoken.go b/botgo/token/authtoken.go index 013aa77e..2c59a421 100644 --- a/botgo/token/authtoken.go +++ b/botgo/token/authtoken.go @@ -100,7 +100,7 @@ func (atoken *AuthTokenInfo) StartRefreshAccessToken(ctx context.Context, tokenU // func (atoken *AuthTokenInfo) StartRefreshAccessToken(ctx context.Context, tokenURL, appID, clientSecrent string) (err error) { // // 创建一个固定的token信息 // fixedTokenInfo := AccessTokenInfo{ -// Token: "PpAPgoel0-gTeaxy-ydak0kUKxJrCSlbLcwtuPt99jCPVrahkqh3WSiIy9s63tCZnTEp4asw035u", +// Token: "PyR4PL9_eRfAkIIlWE4nAawocFMlPfQCySgASB5vJRduWgKh0mSOp4zm4AOzDKpweV9iu5zq-OWm", // ExpiresIn: 3600, // 这里假设token的有效时间是3600秒,你可以根据需要调整 // } // atoken.setAuthToken(fixedTokenInfo) diff --git a/botgo/token/token.go b/botgo/token/token.go index 181312f0..b03a53b7 100644 --- a/botgo/token/token.go +++ b/botgo/token/token.go @@ -98,7 +98,7 @@ func (t *Token) GetAccessToken() string { // GetAccessToken 取得测试鉴权Token // func (t *Token) GetAccessToken() string { // // 固定的token值 -// return "PpAPgoel0-gTeaxy-ydak0kUKxJrCSlbLcwtuPt99jCPVrahkqh3WSiIy9s63tCZnTEp4asw035u" +// return "PyR4PL9_eRfAkIIlWE4nAawocFMlPfQCySgASB5vJRduWgKh0mSOp4zm4AOzDKpweV9iu5zq-OWm" // } // UpAccessToken 更新accessToken diff --git a/config/config.go b/config/config.go index 2d0f37a0..edbc57da 100644 --- a/config/config.go +++ b/config/config.go @@ -32,6 +32,12 @@ type Settings struct { Server_dir string `yaml:"server_dir"` Lotus bool `yaml:"lotus"` Port string `yaml:"port"` + + // 连接wss时使用,不是wss可留空 + WsToken string `yaml:"ws_token,omitempty"` + + // 如果需要在群权限判断是管理员是,将user_id填入这里,master_id是一个文本数组 + MasterID []string `yaml:"master_id,omitempty"` } // LoadConfig 从文件中加载配置并初始化单例配置 @@ -123,3 +129,23 @@ func GetAppID() uint64 { } return 0 // or whatever default value you'd like to return if instance is nil } + +// 获取WsToken +func GetWsToken() string { + mu.Lock() + defer mu.Unlock() + if instance != nil { + return instance.Settings.WsToken + } + return "" // 返回空字符串,如果instance为nil +} + +// 获取MasterID数组 +func GetMasterID() []string { + mu.Lock() + defer mu.Unlock() + if instance != nil { + return instance.Settings.MasterID + } + return nil // 返回nil,如果instance为nil +} diff --git a/config_template.go b/config_template.go index edb75ad5..96238c8a 100644 --- a/config_template.go +++ b/config_template.go @@ -31,4 +31,6 @@ settings: lotus: false # lotus特性默认为false,当为true时,将会连接到另一个lotus为false的gensokyo。 # 使用它提供的图床和idmaps服务(场景:同一个机器人在不同服务器运行,或内网需要发送base64图)。 # 如果需要发送base64图片,需要设置正确的公网server_dir和开放对应的port + ws_token: "" #连接wss地址时服务器所需的token,如果是ws,可留空 + master_id : ["1","2"] #群场景尚未开放获取管理员和列表能力,手动从日志中获取需要设置为管理,的user_id并填入(适用插件有权限判断场景) ` diff --git a/config_template.yml b/config_template.yml index dc534926..d06b677d 100644 --- a/config_template.yml +++ b/config_template.yml @@ -27,4 +27,6 @@ settings: port: "" # idmaps和图床对外开放的端口号 lotus: false # lotus特性默认为false,当为true时,将会连接到另一个lotus为false的gensokyo。 # 使用它提供的图床和idmaps服务(场景:同一个机器人在不同服务器运行,或内网需要发送base64图)。 - # 如果需要发送base64图片,需要设置正确的公网server_dir和开放对应的port \ No newline at end of file + # 如果需要发送base64图片,需要设置正确的公网server_dir和开放对应的port + ws_token: "" #连接wss地址时服务器所需的token,如果是ws,可留空 + master_id : ["1","2"] #群场景尚未开放获取管理员和列表能力,手动从日志中获取需要设置为管理,的user_id并填入(适用插件有权限判断场景) \ No newline at end of file diff --git a/handlers/get_group_info.go b/handlers/get_group_info.go index 21cc3028..4e89d21d 100644 --- a/handlers/get_group_info.go +++ b/handlers/get_group_info.go @@ -27,13 +27,12 @@ type OnebotGroupInfo struct { MaxMemberCount int32 `json:"max_member_count"` } -func ConvertGuildToGroupInfo(guild *dto.Guild) *OnebotGroupInfo { - groupID, err := strconv.ParseInt(guild.ID, 10, 64) +func ConvertGuildToGroupInfo(guild *dto.Guild, GroupId string) *OnebotGroupInfo { + groupidstr, err := strconv.ParseInt(GroupId, 10, 64) if err != nil { - log.Printf("转换ID失败: %v", err) + log.Printf("groupidstr: %v", err) return nil } - ts, err := guild.JoinedAt.Time() if err != nil { log.Printf("转换JoinedAt失败: %v", err) @@ -42,7 +41,7 @@ func ConvertGuildToGroupInfo(guild *dto.Guild) *OnebotGroupInfo { groupCreateTime := uint32(ts.Unix()) return &OnebotGroupInfo{ - GroupID: groupID, + GroupID: groupidstr, GroupName: guild.Name, GroupMemo: guild.Desc, GroupCreateTime: groupCreateTime, @@ -71,8 +70,15 @@ func handleGetGroupInfo(client callapi.Client, api openapi.OpenAPI, apiv2 openap log.Printf("获取频道信息失败: %v", err) return } - - groupInfo := ConvertGuildToGroupInfo(guild) + //用group_id还原出channelid 这是虚拟成群的私聊信息 + message.Params.ChannelID = message.Params.GroupID.(string) + //读取ini 通过ChannelID取回之前储存的guild_id + GroupId, err := idmap.ReadConfigv2(message.Params.ChannelID, "guild_id") + if err != nil { + log.Printf("Error reading config: %v", err) + return + } + groupInfo := ConvertGuildToGroupInfo(guild, GroupId) groupInfoMap := structToMap(groupInfo) diff --git a/handlers/get_group_member_list.go b/handlers/get_group_member_list.go index b3c71333..7117c708 100644 --- a/handlers/get_group_member_list.go +++ b/handlers/get_group_member_list.go @@ -11,6 +11,13 @@ import ( "github.com/tencent-connect/botgo/openapi" ) +type Response struct { + Retcode int `json:"retcode"` + Status string `json:"status"` + Data []MemberList `json:"data"` + Echo interface{} `json:"echo"` // 使用 interface{} 类型以容纳整数或文本 +} + // Member Onebot 群成员 type MemberList struct { UserID string `json:"user_id"` @@ -19,6 +26,7 @@ type MemberList struct { Role string `json:"role"` JoinTime string `json:"join_time"` LastSentTime string `json:"last_sent_time"` + Level string `json:"level,omitempty"` // 我添加了 Level 字段,因为你的示例中有它,但你可以删除它,如果不需要 } func init() { @@ -41,15 +49,29 @@ func getGroupMemberList(client callapi.Client, api openapi.OpenAPI, apiv2 openap log.Printf("getGroupMemberList(频道): 目前暂未适配私聊虚拟群场景获取虚拟群列表能力") return case "guild": + //要把group_id还原成guild_id + //用group_id还原出channelid 这是虚拟成群的私聊信息 + message.Params.ChannelID = message.Params.GroupID.(string) + //读取ini 通过ChannelID取回之前储存的guild_id + value, err := idmap.ReadConfigv2(message.Params.ChannelID, "guild_id") + if err != nil { + log.Printf("Error reading config: %v", err) + return + } pager := &dto.GuildMembersPager{ Limit: "400", } - membersFromAPI, err := api.GuildMembers(context.TODO(), message.Params.GroupID.(string), pager) + membersFromAPI, err := api.GuildMembers(context.TODO(), value, pager) if err != nil { - log.Printf("Failed to fetch group members for guild %s: %v", message.Params.GroupID.(string), err) + log.Printf("Failed to fetch group members for guild %s: %v", value, err) return } + // log.Println("Number of members in membersFromAPI:", len(membersFromAPI)) + // for i, member := range membersFromAPI { + // log.Printf("Member %d: %+v\n", i+1, *member) + // } + var members []MemberList for _, memberFromAPI := range membersFromAPI { joinedAtTime, err := memberFromAPI.JoinedAt.Time() @@ -81,12 +103,12 @@ func getGroupMemberList(client callapi.Client, api openapi.OpenAPI, apiv2 openap members = append(members, member) } - // Convert the APIOutput structure to a map[string]interface{} - outputMap := structToMap(members) + log.Printf("member message.Echors: %+v\n", message.Echo) - log.Printf("getGroupMemberList(频道): %+v\n", outputMap) + responseJSON := buildResponse(members, message.Echo) // assume echoValue is your echo data + log.Printf("getGroupMemberList(频道): %s\n", responseJSON) - err = client.SendMessage(outputMap) //发回去 + err = client.SendMessage(responseJSON) //发回去 if err != nil { log.Printf("Error sending message via client: %v", err) } @@ -94,3 +116,42 @@ func getGroupMemberList(client callapi.Client, api openapi.OpenAPI, apiv2 openap log.Printf("Unknown msgType: %s", msgType) } } + +func buildResponse(members []MemberList, echoValue interface{}) map[string]interface{} { + data := make([]map[string]interface{}, len(members)) + + for i, member := range members { + memberMap := map[string]interface{}{ + "user_id": member.UserID, + "group_id": member.GroupID, + "nickname": member.Nickname, + "role": member.Role, + "join_time": member.JoinTime, + "last_sent_time": member.LastSentTime, + } + data[i] = memberMap + } + + response := map[string]interface{}{ + "retcode": 0, + "status": "ok", + "data": data, + } + + // Set echo based on the type of echoValue + switch v := echoValue.(type) { + case int: + log.Printf("Setting echo as int: %d", v) + response["echo"] = v + case string: + log.Printf("Setting echo as string: %s", v) + response["echo"] = v + case callapi.EchoContent: + log.Printf("Setting echo from EchoContent: %s", string(v)) + response["echo"] = string(v) + default: + log.Printf("Unknown type for echo: %T", v) + } + + return response +} diff --git a/handlers/send_group_msg_async.go b/handlers/send_group_msg_async.go new file mode 100644 index 00000000..62112e23 --- /dev/null +++ b/handlers/send_group_msg_async.go @@ -0,0 +1,9 @@ +package handlers + +import ( + "github.com/hoshinonyaruko/gensokyo/callapi" +) + +func init() { + callapi.RegisterHandler("send_group_msg_async", handleSendGroupMsg) +} diff --git a/handlers/send_msg_async.go b/handlers/send_msg_async.go new file mode 100644 index 00000000..676e36b1 --- /dev/null +++ b/handlers/send_msg_async.go @@ -0,0 +1,9 @@ +package handlers + +import ( + "github.com/hoshinonyaruko/gensokyo/callapi" +) + +func init() { + callapi.RegisterHandler("send_msg_async", handleSendMsg) +} diff --git a/handlers/send_private_msg_async.go b/handlers/send_private_msg_async.go new file mode 100644 index 00000000..8c2c0f44 --- /dev/null +++ b/handlers/send_private_msg_async.go @@ -0,0 +1,9 @@ +package handlers + +import ( + "github.com/hoshinonyaruko/gensokyo/callapi" +) + +func init() { + callapi.RegisterHandler("send_private_msg_async", handleSendPrivateMsg) +} diff --git a/wsclient/ws.go b/wsclient/ws.go index 224259a0..4255b1a3 100644 --- a/wsclient/ws.go +++ b/wsclient/ws.go @@ -10,6 +10,7 @@ import ( "github.com/gorilla/websocket" "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/hoshinonyaruko/gensokyo/config" "github.com/tencent-connect/botgo/openapi" ) @@ -111,12 +112,19 @@ func (c *WebSocketClient) sendHeartbeat(ctx context.Context, botID uint64) { // NewWebSocketClient 创建 WebSocketClient 实例,接受 WebSocket URL、botID 和 openapi.OpenAPI 实例 func NewWebSocketClient(urlStr string, botID uint64, api openapi.OpenAPI, apiv2 openapi.OpenAPI) (*WebSocketClient, error) { + token := config.GetWsToken() // 从配置中获取 token + headers := http.Header{ "User-Agent": []string{"CQHttp/4.15.0"}, "X-Client-Role": []string{"Universal"}, "X-Self-ID": []string{fmt.Sprintf("%d", botID)}, } + // 如果 token 不为空,将其添加到 headers 中 + if token != "" { + headers["Authorization"] = []string{"Token " + token} + } + dialer := websocket.Dialer{ Proxy: http.ProxyFromEnvironment, HandshakeTimeout: 45 * time.Second, From 84e8fe94766c92446da8a6715791dba97cec7085 Mon Sep 17 00:00:00 2001 From: cosmo Date: Thu, 26 Oct 2023 19:03:14 +0800 Subject: [PATCH 13/36] bugfix --- botgo/token/authtoken.go | 43 ---------------------------------------- botgo/token/token.go | 5 ----- config/config.go | 22 -------------------- 3 files changed, 70 deletions(-) diff --git a/botgo/token/authtoken.go b/botgo/token/authtoken.go index 06543ea4..2c59a421 100644 --- a/botgo/token/authtoken.go +++ b/botgo/token/authtoken.go @@ -96,49 +96,6 @@ func (atoken *AuthTokenInfo) StartRefreshAccessToken(ctx context.Context, tokenU return } -// 测试用 -func (atoken *AuthTokenInfo) StartRefreshAccessToken(ctx context.Context, tokenURL, appID, clientSecrent string) (err error) { - // 首先,立即获取一次AccessToken - tokenInfo, err := queryAccessToken(ctx, tokenURL, appID, clientSecrent) - if err != nil { - return err - } - atoken.setAuthToken(tokenInfo) - fmt.Printf("获取到的token是: %s\n", tokenInfo.Token) // 输出获取到的token - - // 获取token的有效期(通常以秒为单位) - tokenTTL := tokenInfo.ExpiresIn - // 使用sync.Once保证仅启动一个goroutine进行定时刷新 - atoken.once.Do(func() { - go func() { // 启动一个新的goroutine - for { - // 如果tokenTTL为0或负数,将其设置为1 - if tokenTTL <= 0 { - tokenTTL = 1 - } - select { - case <-time.NewTimer(time.Duration(tokenTTL) * time.Second).C: // 当token过期时 - case upToken := <-atoken.forceUpToken: // 接收强制更新token的信号 - log.Warnf("recv uptoken info:%v", upToken) - case <-ctx.Done(): // 当上下文结束时,退出goroutine - log.Warnf("recv ctx:%v exit refreshAccessToken", ctx.Err()) - return - } - // 查询并获取新的AccessToken - tokenInfo, err := queryAccessToken(ctx, tokenURL, appID, clientSecrent) - if err == nil { - atoken.setAuthToken(tokenInfo) - fmt.Printf("获取到的token是: %s\n", tokenInfo.Token) // 输出获取到的token - tokenTTL = tokenInfo.ExpiresIn - } else { - log.Errorf("queryAccessToken err:%v", err) - } - } - }() - }) - return -} - // 测试用 // func (atoken *AuthTokenInfo) StartRefreshAccessToken(ctx context.Context, tokenURL, appID, clientSecrent string) (err error) { // // 创建一个固定的token信息 diff --git a/botgo/token/token.go b/botgo/token/token.go index 489b942d..b03a53b7 100644 --- a/botgo/token/token.go +++ b/botgo/token/token.go @@ -95,11 +95,6 @@ func (t *Token) GetAccessToken() string { return t.authToken.getAuthToken().Token } -// GetAccessToken 取得测试鉴权Token -func (t *Token) GetAccessToken() string { - return t.authToken.getAuthToken().Token -} - // GetAccessToken 取得测试鉴权Token // func (t *Token) GetAccessToken() string { // // 固定的token值 diff --git a/config/config.go b/config/config.go index ffe1f0b0..edbc57da 100644 --- a/config/config.go +++ b/config/config.go @@ -149,25 +149,3 @@ func GetMasterID() []string { } return nil // 返回nil,如果instance为nil } - -// 获取Array的值 -func GetArrayValue() bool { - mu.Lock() - defer mu.Unlock() - - if instance == nil { - log.Println("Warning: instance is nil when trying to get array value.") - return false - } - return instance.Settings.Array -} - -// 获取AppID -func GetAppID() uint64 { - mu.Lock() - defer mu.Unlock() - if instance != nil { - return instance.Settings.AppID - } - return 0 // or whatever default value you'd like to return if instance is nil -} From 0e4fd50890c5b0e441c6ec518cf76764f86dda03 Mon Sep 17 00:00:00 2001 From: cosmo Date: Thu, 26 Oct 2023 19:10:10 +0800 Subject: [PATCH 14/36] fix action --- .github/workflows/cross_compile.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/cross_compile.yml b/.github/workflows/cross_compile.yml index a4e4873b..4796a506 100644 --- a/.github/workflows/cross_compile.yml +++ b/.github/workflows/cross_compile.yml @@ -58,6 +58,7 @@ jobs: env: GOOS: ${{ matrix.os }} GOARCH: ${{ matrix.goarch }} + CGO_ENABLED: ${{ matrix.os == 'android' || matrix.goarch == 'arm' || matrix.goarch == 'arm64' ? '0' : '1' }} run: | go build -o output/gensokyo-${{ matrix.os }}-${{ matrix.goarch }} From fe2234a7360eef05068b0b1a5e98afc2c72aaf38 Mon Sep 17 00:00:00 2001 From: cosmo Date: Thu, 26 Oct 2023 19:13:52 +0800 Subject: [PATCH 15/36] fix action again --- .github/workflows/cross_compile.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cross_compile.yml b/.github/workflows/cross_compile.yml index 4796a506..a38d506f 100644 --- a/.github/workflows/cross_compile.yml +++ b/.github/workflows/cross_compile.yml @@ -58,8 +58,11 @@ jobs: env: GOOS: ${{ matrix.os }} GOARCH: ${{ matrix.goarch }} - CGO_ENABLED: ${{ matrix.os == 'android' || matrix.goarch == 'arm' || matrix.goarch == 'arm64' ? '0' : '1' }} + CGO_ENABLED: 1 run: | + if [[ "${{ matrix.os }}" == "android" || "${{ matrix.goarch }}" == "arm" || "${{ matrix.goarch }}" == "arm64" ]]; then + export CGO_ENABLED=0 + fi go build -o output/gensokyo-${{ matrix.os }}-${{ matrix.goarch }} - name: Upload artifacts From 087583758c8d8f774798dc57c6a5e5308cec36f5 Mon Sep 17 00:00:00 2001 From: cosmo Date: Thu, 26 Oct 2023 19:18:58 +0800 Subject: [PATCH 16/36] fa --- .github/workflows/cross_compile.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/cross_compile.yml b/.github/workflows/cross_compile.yml index a38d506f..cd926c66 100644 --- a/.github/workflows/cross_compile.yml +++ b/.github/workflows/cross_compile.yml @@ -58,11 +58,8 @@ jobs: env: GOOS: ${{ matrix.os }} GOARCH: ${{ matrix.goarch }} - CGO_ENABLED: 1 + CGO_ENABLED: 0 run: | - if [[ "${{ matrix.os }}" == "android" || "${{ matrix.goarch }}" == "arm" || "${{ matrix.goarch }}" == "arm64" ]]; then - export CGO_ENABLED=0 - fi go build -o output/gensokyo-${{ matrix.os }}-${{ matrix.goarch }} - name: Upload artifacts From 3a3c33f39eec8c283769612a6843b0b1f647bd5b Mon Sep 17 00:00:00 2001 From: cosmo Date: Thu, 26 Oct 2023 19:23:37 +0800 Subject: [PATCH 17/36] fix --- .github/workflows/cross_compile.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/cross_compile.yml b/.github/workflows/cross_compile.yml index cd926c66..564015e1 100644 --- a/.github/workflows/cross_compile.yml +++ b/.github/workflows/cross_compile.yml @@ -27,8 +27,6 @@ jobs: goarch: amd64 - os: windows goarch: 386 - - os: android - goarch: arm - os: android goarch: arm64 # ... Add other combinations as needed From 8789fa88761cb75d95409963d760884a9d741ace Mon Sep 17 00:00:00 2001 From: cosmo Date: Fri, 27 Oct 2023 19:09:01 +0800 Subject: [PATCH 18/36] add a lot --- Processor/ProcessC2CMessage.go | 40 +++++++--- Processor/ProcessChannelDirectMessage.go | 58 +++++++++++---- Processor/ProcessGroupMessage.go | 21 ++++-- Processor/ProcessGuildATMessage.go | 43 ++++++++--- Processor/ProcessGuildNormalMessage.go | 43 ++++++++--- Processor/Processor.go | 22 ++++-- callapi/callapi.go | 4 +- config/config.go | 44 ++++++++--- config_template.go | 19 +++-- config_template.yml | 5 +- handlers/get_status.go | 78 ++++++++++++++++++++ handlers/message_parser.go | 78 +++++++++++++++++++- handlers/send_group_msg.go | 14 +++- handlers/send_guild_channel_msg.go | 18 +++-- handlers/send_msg.go | 23 ++++-- handlers/send_private_msg.go | 15 +++- main.go | 94 ++++++++++++------------ server/uploadpic.go | 2 +- server/wsserver.go | 89 ++++++++++++++++++++++ wsclient/ws.go | 58 ++++++++++----- 20 files changed, 604 insertions(+), 164 deletions(-) create mode 100644 handlers/get_status.go create mode 100644 server/wsserver.go diff --git a/Processor/ProcessC2CMessage.go b/Processor/ProcessC2CMessage.go index d5fcb301..50f097e3 100644 --- a/Processor/ProcessC2CMessage.go +++ b/Processor/ProcessC2CMessage.go @@ -5,6 +5,7 @@ import ( "fmt" "log" "strconv" + "strings" "time" "github.com/hoshinonyaruko/gensokyo/config" @@ -16,7 +17,7 @@ import ( ) // ProcessC2CMessage 处理C2C消息 群私聊 -func (p *Processor) ProcessC2CMessage(data *dto.WSC2CMessageData) error { +func (p *Processors) ProcessC2CMessage(data *dto.WSC2CMessageData) error { // 打印data结构体 PrintStructWithFieldNames(data) @@ -89,15 +90,26 @@ func (p *Processor) ProcessC2CMessage(data *dto.WSC2CMessageData) error { // Convert OnebotGroupMessage to map and send privateMsgMap := structToMap(privateMsg) - err = p.Wsclient.SendMessage(privateMsgMap) - if err != nil { - return fmt.Errorf("error sending group message via wsclient: %v", err) + var errors []string + + for _, client := range p.Wsclient { + err = client.SendMessage(privateMsgMap) + if err != nil { + // 记录错误信息,但不立即返回 + errors = append(errors, fmt.Sprintf("error sending private message via wsclient: %v", err)) + } + } + + // 在循环结束后处理记录的错误 + if len(errors) > 0 { + // 使用strings.Join合并所有的错误信息 + return fmt.Errorf(strings.Join(errors, "; ")) } } else { //将私聊信息转化为群信息(特殊需求情况下) //转换at - messageText := handlers.RevertTransformedText(data.Content) + messageText := handlers.RevertTransformedText(data) //转换appid AppIDString := strconv.FormatUint(p.Settings.AppID, 10) //构造echo @@ -165,11 +177,21 @@ func (p *Processor) ProcessC2CMessage(data *dto.WSC2CMessageData) error { // Convert OnebotGroupMessage to map and send groupMsgMap := structToMap(groupMsg) - err = p.Wsclient.SendMessage(groupMsgMap) - if err != nil { - return fmt.Errorf("error sending group message via wsclient: %v", err) + var errors []string + + for _, client := range p.Wsclient { + err = client.SendMessage(groupMsgMap) + if err != nil { + // 记录错误信息,但不立即返回 + errors = append(errors, fmt.Sprintf("error sending group message via wsclient: %v", err)) + } } - } + // 在循环结束后处理记录的错误 + if len(errors) > 0 { + // 使用strings.Join合并所有的错误信息 + log.Println("Encountered errors while sending to wsclients:", strings.Join(errors, "; ")) + } + } return nil } diff --git a/Processor/ProcessChannelDirectMessage.go b/Processor/ProcessChannelDirectMessage.go index ebf08932..52b31940 100644 --- a/Processor/ProcessChannelDirectMessage.go +++ b/Processor/ProcessChannelDirectMessage.go @@ -5,6 +5,7 @@ import ( "fmt" "log" "strconv" + "strings" "time" "github.com/hoshinonyaruko/gensokyo/config" @@ -17,7 +18,7 @@ import ( ) // ProcessChannelDirectMessage 处理频道私信消息 这里我们是被动收到 -func (p *Processor) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) error { +func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) error { // 打印data结构体 //PrintStructWithFieldNames(data) @@ -93,9 +94,20 @@ func (p *Processor) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) e // Convert OnebotGroupMessage to map and send privateMsgMap := structToMap(privateMsg) - err = p.Wsclient.SendMessage(privateMsgMap) - if err != nil { - return fmt.Errorf("error sending group message via wsclient: %v", err) + var errors []string + + for _, client := range p.Wsclient { + err = client.SendMessage(privateMsgMap) + if err != nil { + // 记录错误信息,但不立即返回 + errors = append(errors, fmt.Sprintf("error sending private message via wsclient: %v", err)) + } + } + + // 在循环结束后处理记录的错误 + if len(errors) > 0 { + // 使用strings.Join合并所有的错误信息 + return fmt.Errorf(strings.Join(errors, "; ")) } } else { if !p.Settings.GlobalChannelToGroup { @@ -109,7 +121,7 @@ func (p *Processor) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) e //获取s s := client.GetGlobalS() //转换at - messageText := handlers.RevertTransformedText(data.Content) + messageText := handlers.RevertTransformedText(data) //转换appid AppIDString := strconv.FormatUint(p.Settings.AppID, 10) //构造echo @@ -175,18 +187,27 @@ func (p *Processor) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) e // 将 onebotMsg 结构体转换为 map[string]interface{} msgMap := structToMap(onebotMsg) + var errors []string - // 使用 wsclient 发送消息 - err = p.Wsclient.SendMessage(msgMap) - if err != nil { - return fmt.Errorf("error sending message via wsclient: %v", err) + for _, client := range p.Wsclient { + err = client.SendMessage(msgMap) + if err != nil { + // 记录错误信息,但不立即返回 + errors = append(errors, fmt.Sprintf("error sending message via wsclient: %v", err)) + } + } + + // 在循环结束后处理记录的错误 + if len(errors) > 0 { + // 使用strings.Join合并所有的错误信息 + return fmt.Errorf(strings.Join(errors, "; ")) } } else { //将频道信息转化为群信息(特殊需求情况下) //将channelid写入ini,可取出guild_id idmap.WriteConfigv2(data.ChannelID, "guild_id", data.GuildID) //转换at - messageText := handlers.RevertTransformedText(data.Content) + messageText := handlers.RevertTransformedText(data) //转换appid AppIDString := strconv.FormatUint(p.Settings.AppID, 10) //构造echo @@ -266,9 +287,20 @@ func (p *Processor) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) e // Convert OnebotGroupMessage to map and send groupMsgMap := structToMap(groupMsg) - err = p.Wsclient.SendMessage(groupMsgMap) - if err != nil { - return fmt.Errorf("error sending group message via wsclient: %v", err) + var errors []string + + for _, client := range p.Wsclient { + err = client.SendMessage(groupMsgMap) + if err != nil { + // 记录错误信息,但不立即返回 + errors = append(errors, fmt.Sprintf("error sending group message via wsclient: %v", err)) + } + } + + // 在循环结束后处理记录的错误 + if len(errors) > 0 { + // 使用strings.Join合并所有的错误信息 + return fmt.Errorf(strings.Join(errors, "; ")) } } diff --git a/Processor/ProcessGroupMessage.go b/Processor/ProcessGroupMessage.go index c414ef35..bb057694 100644 --- a/Processor/ProcessGroupMessage.go +++ b/Processor/ProcessGroupMessage.go @@ -5,6 +5,7 @@ import ( "fmt" "log" "strconv" + "strings" "time" "github.com/hoshinonyaruko/gensokyo/config" @@ -17,14 +18,14 @@ import ( ) // ProcessGroupMessage 处理群组消息 -func (p *Processor) ProcessGroupMessage(data *dto.WSGroupATMessageData) error { +func (p *Processors) ProcessGroupMessage(data *dto.WSGroupATMessageData) error { // 获取s s := client.GetGlobalS() idmap.WriteConfigv2(data.ChannelID, "guild_id", data.GuildID) // 转换at - messageText := handlers.RevertTransformedText(data.Content) + messageText := handlers.RevertTransformedText(data) // 转换appid AppIDString := strconv.FormatUint(p.Settings.AppID, 10) @@ -107,10 +108,20 @@ func (p *Processor) ProcessGroupMessage(data *dto.WSGroupATMessageData) error { // Convert OnebotGroupMessage to map and send groupMsgMap := structToMap(groupMsg) - err = p.Wsclient.SendMessage(groupMsgMap) - if err != nil { - return fmt.Errorf("error sending group message via wsclient: %v", err) + var errors []string + + for _, client := range p.Wsclient { + err = client.SendMessage(groupMsgMap) + if err != nil { + // 记录错误信息,但不立即返回 + errors = append(errors, fmt.Sprintf("error sending group message via wsclient: %v", err)) + } } + // 在循环结束后处理记录的错误 + if len(errors) > 0 { + // 使用strings.Join合并所有的错误信息 + return fmt.Errorf(strings.Join(errors, "; ")) + } return nil } diff --git a/Processor/ProcessGuildATMessage.go b/Processor/ProcessGuildATMessage.go index 80e40c35..ea4e5998 100644 --- a/Processor/ProcessGuildATMessage.go +++ b/Processor/ProcessGuildATMessage.go @@ -5,6 +5,7 @@ import ( "fmt" "log" "strconv" + "strings" "time" "github.com/hoshinonyaruko/gensokyo/config" @@ -17,7 +18,7 @@ import ( ) // ProcessGuildATMessage 处理消息,执行逻辑并可能使用 api 发送响应 -func (p *Processor) ProcessGuildATMessage(data *dto.WSATMessageData) error { +func (p *Processors) ProcessGuildATMessage(data *dto.WSATMessageData) error { if !p.Settings.GlobalChannelToGroup { // 将时间字符串转换为时间戳 t, err := time.Parse(time.RFC3339, string(data.Timestamp)) @@ -27,7 +28,7 @@ func (p *Processor) ProcessGuildATMessage(data *dto.WSATMessageData) error { //获取s s := client.GetGlobalS() //转换at - messageText := handlers.RevertTransformedText(data.Content) + messageText := handlers.RevertTransformedText(data) //转换appid AppIDString := strconv.FormatUint(p.Settings.AppID, 10) //构造echo @@ -98,12 +99,21 @@ func (p *Processor) ProcessGuildATMessage(data *dto.WSATMessageData) error { // 将 onebotMsg 结构体转换为 map[string]interface{} msgMap := structToMap(onebotMsg) - // 使用 wsclient 发送消息 - err = p.Wsclient.SendMessage(msgMap) - if err != nil { - return fmt.Errorf("error sending message via wsclient: %v", err) + var errors []string + + for _, client := range p.Wsclient { + err = client.SendMessage(msgMap) + if err != nil { + // 记录错误信息,但不立即返回 + errors = append(errors, fmt.Sprintf("error sending message via wsclient: %v", err)) + } } + // 在循环结束后处理记录的错误 + if len(errors) > 0 { + // 使用strings.Join合并所有的错误信息 + return fmt.Errorf(strings.Join(errors, "; ")) + } } else { // GlobalChannelToGroup为true时的处理逻辑 //将频道转化为一个群 @@ -111,8 +121,8 @@ func (p *Processor) ProcessGuildATMessage(data *dto.WSATMessageData) error { s := client.GetGlobalS() //将channelid写入ini,可取出guild_id todo 比ini更好的储存方式 idmap.WriteConfigv2(data.ChannelID, "guild_id", data.GuildID) - //转换at - messageText := handlers.RevertTransformedText(data.Content) + //转换at和图片 + messageText := handlers.RevertTransformedText(data) //转换appid AppIDString := strconv.FormatUint(p.Settings.AppID, 10) //构造echo @@ -192,9 +202,20 @@ func (p *Processor) ProcessGuildATMessage(data *dto.WSATMessageData) error { // Convert OnebotGroupMessage to map and send groupMsgMap := structToMap(groupMsg) - err = p.Wsclient.SendMessage(groupMsgMap) - if err != nil { - return fmt.Errorf("error sending group message via wsclient: %v", err) + var errors []string + + for _, client := range p.Wsclient { + err = client.SendMessage(groupMsgMap) + if err != nil { + // 记录错误信息,但不立即返回 + errors = append(errors, fmt.Sprintf("error sending group message via wsclient: %v", err)) + } + } + + // 在循环结束后处理记录的错误 + if len(errors) > 0 { + // 使用strings.Join合并所有的错误信息 + return fmt.Errorf(strings.Join(errors, "; ")) } } diff --git a/Processor/ProcessGuildNormalMessage.go b/Processor/ProcessGuildNormalMessage.go index 011d96e9..5eeb84a2 100644 --- a/Processor/ProcessGuildNormalMessage.go +++ b/Processor/ProcessGuildNormalMessage.go @@ -5,6 +5,7 @@ import ( "fmt" "log" "strconv" + "strings" "time" "github.com/hoshinonyaruko/gensokyo/config" @@ -16,7 +17,7 @@ import ( ) // ProcessGuildNormalMessage 处理频道常规消息 -func (p *Processor) ProcessGuildNormalMessage(data *dto.WSMessageData) error { +func (p *Processors) ProcessGuildNormalMessage(data *dto.WSMessageData) error { if !p.Settings.GlobalChannelToGroup { // 将时间字符串转换为时间戳 t, err := time.Parse(time.RFC3339, string(data.Timestamp)) @@ -26,7 +27,7 @@ func (p *Processor) ProcessGuildNormalMessage(data *dto.WSMessageData) error { //获取s s := client.GetGlobalS() //转换at - messageText := handlers.RevertTransformedText(data.Content) + messageText := handlers.RevertTransformedText(data) //转换appid AppIDString := strconv.FormatUint(p.Settings.AppID, 10) //构造echo @@ -97,12 +98,22 @@ func (p *Processor) ProcessGuildNormalMessage(data *dto.WSMessageData) error { // 将 onebotMsg 结构体转换为 map[string]interface{} msgMap := structToMap(onebotMsg) - // 使用 wsclient 发送消息 - err = p.Wsclient.SendMessage(msgMap) - if err != nil { - return fmt.Errorf("error sending message via wsclient: %v", err) + var errors []string + + // 遍历每一个 wsclient 并发送消息 + for _, client := range p.Wsclient { + err = client.SendMessage(msgMap) + if err != nil { + // 记录错误但不立即返回 + errors = append(errors, fmt.Sprintf("error sending message via wsclient: %v", err)) + } } + // 在循环结束后处理记录的错误 + if len(errors) > 0 { + // 使用strings.Join来合并所有的错误信息 + return fmt.Errorf(strings.Join(errors, "; ")) + } } else { // GlobalChannelToGroup为true时的处理逻辑 //将频道转化为一个群 @@ -111,7 +122,7 @@ func (p *Processor) ProcessGuildNormalMessage(data *dto.WSMessageData) error { //将channelid写入ini,可取出guild_id todo 比ini更好的储存方式 idmap.WriteConfigv2(data.ChannelID, "guild_id", data.GuildID) //转换at - messageText := handlers.RevertTransformedText(data.Content) + messageText := handlers.RevertTransformedText(data) //转换appid AppIDString := strconv.FormatUint(p.Settings.AppID, 10) //构造echo @@ -191,11 +202,23 @@ func (p *Processor) ProcessGuildNormalMessage(data *dto.WSMessageData) error { // Convert OnebotGroupMessage to map and send groupMsgMap := structToMap(groupMsg) - err = p.Wsclient.SendMessage(groupMsgMap) - if err != nil { - return fmt.Errorf("error sending group message via wsclient: %v", err) + + var errors []string + + // 遍历每一个 wsclient 并发送消息 + for _, client := range p.Wsclient { + err = client.SendMessage(groupMsgMap) + if err != nil { + // 记录错误但不立即返回 + errors = append(errors, fmt.Sprintf("error sending group message via wsclient: %v", err)) + } } + // 在循环结束后处理记录的错误 + if len(errors) > 0 { + // 使用strings.Join来合并所有的错误信息 + return fmt.Errorf(strings.Join(errors, "; ")) + } } return nil diff --git a/Processor/Processor.go b/Processor/Processor.go index ceada563..b0b91915 100644 --- a/Processor/Processor.go +++ b/Processor/Processor.go @@ -15,11 +15,11 @@ import ( ) // Processor 结构体用于处理消息 -type Processor struct { - Api openapi.OpenAPI // API 类型 - Apiv2 openapi.OpenAPI //群的API - Settings *config.Settings // 使用指针 - Wsclient *wsclient.WebSocketClient // 使用指针 +type Processors struct { + Api openapi.OpenAPI // API 类型 + Apiv2 openapi.OpenAPI //群的API + Settings *config.Settings // 使用指针 + Wsclient []*wsclient.WebSocketClient // 指针的切片 } type Sender struct { @@ -95,7 +95,7 @@ func FoxTimestamp() int64 { } // ProcessInlineSearch 处理内联查询 -func (p *Processor) ProcessInlineSearch(data *dto.WSInteractionData) error { +func (p *Processors) ProcessInlineSearch(data *dto.WSInteractionData) error { //ctx := context.Background() // 或从更高级别传递一个上下文 // 在这里处理内联查询 @@ -173,3 +173,13 @@ func structToMap(obj interface{}) map[string]interface{} { json.Unmarshal(j, &out) return out } + +// 修改函数的返回类型为 *Processor +func NewProcessor(api openapi.OpenAPI, apiv2 openapi.OpenAPI, settings *config.Settings, wsclient []*wsclient.WebSocketClient) *Processors { + return &Processors{ + Api: api, + Apiv2: apiv2, + Settings: settings, + Wsclient: wsclient, + } +} diff --git a/callapi/callapi.go b/callapi/callapi.go index 51116fd4..ec9221f1 100644 --- a/callapi/callapi.go +++ b/callapi/callapi.go @@ -111,11 +111,9 @@ type Message struct { Echo interface{} `json:"echo,omitempty"` } -// 这是一个接口,在wsclient传入client但不需要引用wsclient包,避免循环引用 +// 这是一个接口,在wsclient传入client但不需要引用wsclient包,避免循环引用,复用wsserver和client逻辑 type Client interface { SendMessage(message map[string]interface{}) error - GetAppID() uint64 - GetAppIDStr() string } // 根据action订阅handler处理api diff --git a/config/config.go b/config/config.go index edbc57da..2e27f98c 100644 --- a/config/config.go +++ b/config/config.go @@ -3,6 +3,7 @@ package config import ( + "fmt" "log" "os" "sync" @@ -21,7 +22,7 @@ type Config struct { } type Settings struct { - WsAddress string `yaml:"ws_address"` + WsAddress []string `yaml:"ws_address"` AppID uint64 `yaml:"app_id"` Token string `yaml:"token"` ClientSecret string `yaml:"client_secret"` @@ -32,12 +33,9 @@ type Settings struct { Server_dir string `yaml:"server_dir"` Lotus bool `yaml:"lotus"` Port string `yaml:"port"` - - // 连接wss时使用,不是wss可留空 - WsToken string `yaml:"ws_token,omitempty"` - - // 如果需要在群权限判断是管理员是,将user_id填入这里,master_id是一个文本数组 - MasterID []string `yaml:"master_id,omitempty"` + WsToken []string `yaml:"ws_token,omitempty"` // 连接wss时使用,不是wss可留空 一一对应 + MasterID []string `yaml:"master_id,omitempty"` // 如果需要在群权限判断是管理员是,将user_id填入这里,master_id是一个文本数组 + EnableWsServer bool `yaml:"enable_ws_server,omitempty"` //正向ws开关 } // LoadConfig 从文件中加载配置并初始化单例配置 @@ -62,14 +60,14 @@ func LoadConfig(path string) (*Config, error) { return conf, nil } -// 获取ws地址 -func GetWsAddress() string { +// 获取ws地址数组 +func GetWsAddress() []string { mu.Lock() defer mu.Unlock() if instance != nil { return instance.Settings.WsAddress } - return "" + return nil // 返回nil,如果instance为nil } // 获取gensokyo服务的地址 @@ -130,14 +128,24 @@ func GetAppID() uint64 { return 0 // or whatever default value you'd like to return if instance is nil } +// 获取AppID String +func GetAppIDStr() string { + mu.Lock() + defer mu.Unlock() + if instance != nil { + return fmt.Sprintf("%d", instance.Settings.AppID) + } + return "0" +} + // 获取WsToken -func GetWsToken() string { +func GetWsToken() []string { mu.Lock() defer mu.Unlock() if instance != nil { return instance.Settings.WsToken } - return "" // 返回空字符串,如果instance为nil + return nil // 返回nil,如果instance为nil } // 获取MasterID数组 @@ -149,3 +157,15 @@ func GetMasterID() []string { } return nil // 返回nil,如果instance为nil } + +// 获取port的值 +func GetEnableWsServer() bool { + mu.Lock() + defer mu.Unlock() + + if instance == nil { + log.Println("Warning: instance is nil when trying to get port value.") + return false + } + return instance.Settings.EnableWsServer +} diff --git a/config_template.go b/config_template.go index 96238c8a..6200655e 100644 --- a/config_template.go +++ b/config_template.go @@ -3,7 +3,7 @@ package main const configTemplate = ` version: 1 settings: - ws_address: "ws://:" # WebSocket服务的地址 + ws_address: ["ws://:"] # WebSocket服务的地址 支持多个["","",""] app_id: # 你的应用ID token: "" # 你的应用令牌 client_secret: "" # 你的客户端密钥 @@ -16,21 +16,28 @@ settings: # - "GuildEventHandler" # 频道事件 # - "MemberEventHandler" # 频道成员新增 # - "ChannelEventHandler" # 频道事件 - # - "CreateMessageHandler" # 频道不at信息 + # - "CreateMessageHandler" # 频道不at信息 私域机器人需要开启 公域机器人开启会连接失败 # - "InteractionHandler" # 添加频道互动回应 # - "GroupATMessageEventHandler" # 群at信息 仅频道机器人时候需要注释 # - "C2CMessageEventHandler" # 群私聊 仅频道机器人时候需要注释 # - "ThreadEventHandler" # 发帖事件 (当前版本已禁用) - global_channel_to_group: false # 是否将频道转换成群 - global_private_to_channel: false # 是否将私聊转换成频道 + + global_channel_to_group: true # 是否将频道转换成群 默认true + global_private_to_channel: false # 是否将私聊转换成频道 如果是群场景 会将私聊转为群(方便提审\测试) array: false + server_dir: "" # 提供图片上传服务的服务器(图床)需要带端口号. 如果需要发base64图,需为公网ip,且开放对应端口 - port: "" # idmaps和图床对外开放的端口号 + port: "" # idmaps和图床对外开放的端口号 + + lotus: false # lotus特性默认为false,当为true时,将会连接到另一个lotus为false的gensokyo。 # 使用它提供的图床和idmaps服务(场景:同一个机器人在不同服务器运行,或内网需要发送base64图)。 # 如果需要发送base64图片,需要设置正确的公网server_dir和开放对应的port - ws_token: "" #连接wss地址时服务器所需的token,如果是ws,可留空 + + + ws_token: ["","",""] #连接wss地址时服务器所需的token,如果是ws,可留空,按顺序一一对应 master_id : ["1","2"] #群场景尚未开放获取管理员和列表能力,手动从日志中获取需要设置为管理,的user_id并填入(适用插件有权限判断场景) + enable_ws_server: true #是否启用正向ws服务器 监听server_dir:port/ws ` diff --git a/config_template.yml b/config_template.yml index d06b677d..6ea4cb5c 100644 --- a/config_template.yml +++ b/config_template.yml @@ -28,5 +28,6 @@ settings: lotus: false # lotus特性默认为false,当为true时,将会连接到另一个lotus为false的gensokyo。 # 使用它提供的图床和idmaps服务(场景:同一个机器人在不同服务器运行,或内网需要发送base64图)。 # 如果需要发送base64图片,需要设置正确的公网server_dir和开放对应的port - ws_token: "" #连接wss地址时服务器所需的token,如果是ws,可留空 - master_id : ["1","2"] #群场景尚未开放获取管理员和列表能力,手动从日志中获取需要设置为管理,的user_id并填入(适用插件有权限判断场景) \ No newline at end of file + ws_token: ["",""] #连接wss地址时服务器所需的token,如果是ws,可留空,按顺序一一对应 + master_id : ["1","2"] #群场景尚未开放获取管理员和列表能力,手动从日志中获取需要设置为管理,的user_id并填入(适用插件有权限判断场景) + enable_ws_server: true #是否启用正向ws服务器 监听server_dir:port/ws \ No newline at end of file diff --git a/handlers/get_status.go b/handlers/get_status.go new file mode 100644 index 00000000..fc74ace7 --- /dev/null +++ b/handlers/get_status.go @@ -0,0 +1,78 @@ +package handlers + +import ( + "log" + + "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/tencent-connect/botgo/openapi" +) + +type GetStatusResponse struct { + Data StatusData `json:"data"` + Message string `json:"message"` + RetCode int `json:"retcode"` + Status string `json:"status"` + Echo interface{} `json:"echo"` +} + +type StatusData struct { + AppInitialized bool `json:"app_initialized"` + AppEnabled bool `json:"app_enabled"` + PluginsGood bool `json:"plugins_good"` + AppGood bool `json:"app_good"` + Online bool `json:"online"` + Good bool `json:"good"` + Stat Statistics `json:"stat"` +} + +type Statistics struct { + PacketReceived uint64 `json:"packet_received"` + PacketSent uint64 `json:"packet_sent"` + PacketLost uint32 `json:"packet_lost"` + MessageReceived uint64 `json:"message_received"` + MessageSent uint64 `json:"message_sent"` + DisconnectTimes uint32 `json:"disconnect_times"` + LostTimes uint32 `json:"lost_times"` + LastMessageTime int64 `json:"last_message_time"` +} + +func init() { + callapi.RegisterHandler("get_status", getStatus) +} + +func getStatus(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { + + var response GetStatusResponse + + response.Data = StatusData{ + AppInitialized: true, + AppEnabled: true, + PluginsGood: true, + AppGood: true, + Online: true, //测试数据 + Good: true, //测试数据 + Stat: Statistics{ + PacketReceived: 1000, //测试数据 + PacketSent: 950, //测试数据 + PacketLost: 50, //测试数据 + MessageReceived: 500, //测试数据 + MessageSent: 490, //测试数据 + DisconnectTimes: 5, //测试数据 + LostTimes: 2, //测试数据 + LastMessageTime: 1677721600, //测试数据 + }, + } + response.Message = "" + response.RetCode = 0 + response.Status = "ok" + response.Echo = string(message.Echo) // Directly assign the string value + + outputMap := structToMap(response) + + log.Printf("get_status: %+v\n", outputMap) + + err := client.SendMessage(outputMap) + if err != nil { + log.Printf("Error sending message via client: %v", err) + } +} diff --git a/handlers/message_parser.go b/handlers/message_parser.go index 3c98a62d..c2368bf3 100644 --- a/handlers/message_parser.go +++ b/handlers/message_parser.go @@ -3,6 +3,7 @@ package handlers import ( "fmt" "log" + "path/filepath" "regexp" "strings" @@ -13,6 +14,48 @@ import ( var BotID string var AppID string +// 定义响应结构体 +type ServerResponse struct { + Data struct { + MessageID int `json:"message_id"` + } `json:"data"` + Message string `json:"message"` + RetCode int `json:"retcode"` + Status string `json:"status"` + Echo string `json:"echo"` +} + +// 发送成功回执 todo 返回可互转的messageid +func SendResponse(client callapi.Client, err error, message *callapi.ActionMessage) error { + // 设置响应值 + response := ServerResponse{} + response.Data.MessageID = 0 // todo 实现messageid转换 + response.Echo = string(message.Echo) + if err != nil { + response.Message = err.Error() // 可选:在响应中添加错误消息 + //response.RetCode = -1 // 可以是任何非零值,表示出错 + //response.Status = "failed" + response.RetCode = 0 //官方api审核异步的 审核中默认返回失败,但其实信息发送成功了 + response.Status = "ok" + } else { + response.Message = "" + response.RetCode = 0 + response.Status = "ok" + } + + // 转化为map并发送 + outputMap := structToMap(response) + + sendErr := client.SendMessage(outputMap) + if sendErr != nil { + log.Printf("Error sending message via client: %v", sendErr) + return sendErr + } + + log.Printf("发送成功回执: %+v", outputMap) + return nil +} + func parseMessageContent(paramsMessage callapi.ParamsContent) (string, map[string][]string) { messageText := "" @@ -118,9 +161,23 @@ func transformMessageText(messageText string) string { } // 处理at和其他定形文到onebotv11格式(cq码) -func RevertTransformedText(messageText string) string { - // Trim leading and trailing spaces - messageText = strings.TrimSpace(messageText) +func RevertTransformedText(data interface{}) string { + var msg *dto.Message + switch v := data.(type) { + case *dto.WSGroupATMessageData: + msg = (*dto.Message)(v) + case *dto.WSATMessageData: + msg = (*dto.Message)(v) + case *dto.WSMessageData: + msg = (*dto.Message)(v) + case *dto.WSDirectMessageData: + msg = (*dto.Message)(v) + case *dto.WSC2CMessageData: + msg = (*dto.Message)(v) + default: + return "" + } + messageText := strings.TrimSpace(msg.Content) // 将messageText里的BotID替换成AppID messageText = strings.ReplaceAll(messageText, BotID, AppID) @@ -128,13 +185,26 @@ func RevertTransformedText(messageText string) string { // 使用正则表达式来查找所有<@!数字>的模式 re := regexp.MustCompile(`<@!(\d+)>`) // 使用正则表达式来替换找到的模式为[CQ:at,qq=数字] - return re.ReplaceAllStringFunc(messageText, func(m string) string { + messageText = re.ReplaceAllStringFunc(messageText, func(m string) string { submatches := re.FindStringSubmatch(m) if len(submatches) > 1 { return "[CQ:at,qq=" + submatches[1] + "]" } return m }) + + // 处理图片附件 + for _, attachment := range msg.Attachments { + if strings.HasPrefix(attachment.ContentType, "image/") { + // 获取文件的后缀名 + ext := filepath.Ext(attachment.FileName) + md5name := strings.TrimSuffix(attachment.FileName, ext) + imageCQ := "[CQ:image,file=" + md5name + ".image,subType=0,url=" + attachment.URL + "]" + messageText += imageCQ + } + } + + return messageText } // 将收到的data.content转换为message segment todo,群场景不支持受图片,频道场景的图片可以拼一下 diff --git a/handlers/send_group_msg.go b/handlers/send_group_msg.go index 76091c21..a548c89b 100644 --- a/handlers/send_group_msg.go +++ b/handlers/send_group_msg.go @@ -10,6 +10,7 @@ import ( "time" "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/hoshinonyaruko/gensokyo/config" "github.com/hoshinonyaruko/gensokyo/echo" "github.com/hoshinonyaruko/gensokyo/idmap" "github.com/hoshinonyaruko/gensokyo/server" @@ -27,12 +28,12 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap //如果获取不到 就用user_id获取信息类型 if msgType == "" { - msgType = GetMessageTypeByUserid(client.GetAppIDStr(), message.Params.UserID) + msgType = GetMessageTypeByUserid(config.GetAppIDStr(), message.Params.UserID) } //如果获取不到 就用group_id获取信息类型 if msgType == "" { - msgType = GetMessageTypeByGroupid(client.GetAppIDStr(), message.Params.GroupID) + msgType = GetMessageTypeByGroupid(config.GetAppIDStr(), message.Params.GroupID) } switch msgType { @@ -50,7 +51,7 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap log.Println("foundItems:", foundItems) // 如果messageID为空,通过函数获取 if messageID == "" { - messageID = GetMessageIDByUseridOrGroupid(client.GetAppIDStr(), message.Params.GroupID) + messageID = GetMessageIDByUseridOrGroupid(config.GetAppIDStr(), message.Params.GroupID) log.Println("通过GetMessageIDByUserid函数获取的message_id:", messageID) } @@ -74,10 +75,13 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap } groupMessage.Timestamp = time.Now().Unix() // 设置时间戳 - _, err := apiv2.PostGroupMessage(context.TODO(), message.Params.GroupID.(string), groupMessage) + //重新为err赋值 + _, err = apiv2.PostGroupMessage(context.TODO(), message.Params.GroupID.(string), groupMessage) if err != nil { log.Printf("发送文本群组信息失败: %v", err) } + //发送成功回执 + SendResponse(client, err, &message) } // 遍历foundItems并发送每种信息 @@ -98,6 +102,8 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap if err != nil { log.Printf("发送 %s 信息失败_send_group_msg: %v", key, err) } + //发送成功回执 + SendResponse(client, err, &message) } case "guild": //用GroupID给ChannelID赋值,因为我们是把频道虚拟成了群 diff --git a/handlers/send_guild_channel_msg.go b/handlers/send_guild_channel_msg.go index 71e47fe4..892aed6c 100644 --- a/handlers/send_guild_channel_msg.go +++ b/handlers/send_guild_channel_msg.go @@ -8,6 +8,7 @@ import ( "os" "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/hoshinonyaruko/gensokyo/config" "github.com/hoshinonyaruko/gensokyo/echo" @@ -25,12 +26,12 @@ func handleSendGuildChannelMsg(client callapi.Client, api openapi.OpenAPI, apiv2 //如果获取不到 就用user_id获取信息类型 if msgType == "" { - msgType = GetMessageTypeByUserid(client.GetAppIDStr(), message.Params.UserID) + msgType = GetMessageTypeByUserid(config.GetAppIDStr(), message.Params.UserID) } //如果获取不到 就用group_id获取信息类型 if msgType == "" { - appID := client.GetAppIDStr() + appID := config.GetAppIDStr() groupID := message.Params.GroupID fmt.Printf("appID: %s, GroupID: %v\n", appID, groupID) @@ -53,12 +54,15 @@ func handleSendGuildChannelMsg(client callapi.Client, api openapi.OpenAPI, apiv2 log.Println("频道发信息对应的message_id:", messageID) log.Println("频道发信息messageText:", messageText) log.Println("foundItems:", foundItems) + var err error // 优先发送文本信息 if messageText != "" { textMsg, _ := generateReplyMessage(messageID, nil, messageText) - if _, err := api.PostMessage(context.TODO(), channelID, textMsg); err != nil { + if _, err = api.PostMessage(context.TODO(), channelID, textMsg); err != nil { log.Printf("发送文本信息失败: %v", err) } + //发送成功回执 + SendResponse(client, err, &message) } // 遍历foundItems并发送每种信息 @@ -80,13 +84,17 @@ func handleSendGuildChannelMsg(client callapi.Client, api openapi.OpenAPI, apiv2 reply.Content = "" // 使用Multipart方法发送 - if _, err := api.PostMessageMultipart(context.TODO(), channelID, reply, fileImageData); err != nil { + if _, err = api.PostMessageMultipart(context.TODO(), channelID, reply, fileImageData); err != nil { log.Printf("使用multipart发送 %s 信息失败: %v message_id %v", key, err, messageID) } + //发送成功回执 + SendResponse(client, err, &message) } else { - if _, err := api.PostMessage(context.TODO(), channelID, reply); err != nil { + if _, err = api.PostMessage(context.TODO(), channelID, reply); err != nil { log.Printf("发送 %s 信息失败: %v", key, err) } + //发送成功回执 + SendResponse(client, err, &message) } } diff --git a/handlers/send_msg.go b/handlers/send_msg.go index e20753d4..844ac1d0 100644 --- a/handlers/send_msg.go +++ b/handlers/send_msg.go @@ -10,6 +10,7 @@ import ( "time" "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/hoshinonyaruko/gensokyo/config" "github.com/hoshinonyaruko/gensokyo/echo" "github.com/hoshinonyaruko/gensokyo/idmap" "github.com/hoshinonyaruko/gensokyo/server" @@ -27,7 +28,7 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope //如果获取不到 就用group_id获取信息类型 if msgType == "" { - appID := client.GetAppIDStr() + appID := config.GetAppIDStr() groupID := message.Params.GroupID fmt.Printf("appID: %s, GroupID: %v\n", appID, groupID) @@ -37,7 +38,7 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope //如果获取不到 就用user_id获取信息类型 if msgType == "" { - msgType = GetMessageTypeByUserid(client.GetAppIDStr(), message.Params.UserID) + msgType = GetMessageTypeByUserid(config.GetAppIDStr(), message.Params.UserID) } switch msgType { @@ -55,7 +56,7 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope log.Println("foundItems:", foundItems) // 如果messageID为空,通过函数获取 if messageID == "" { - messageID = GetMessageIDByUseridOrGroupid(client.GetAppIDStr(), message.Params.GroupID) + messageID = GetMessageIDByUseridOrGroupid(config.GetAppIDStr(), message.Params.GroupID) log.Println("通过GetMessageIDByUserid函数获取的message_id:", messageID) } @@ -79,10 +80,12 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope } groupMessage.Timestamp = time.Now().Unix() // 设置时间戳 - _, err := apiv2.PostGroupMessage(context.TODO(), message.Params.GroupID.(string), groupMessage) + _, err = apiv2.PostGroupMessage(context.TODO(), message.Params.GroupID.(string), groupMessage) if err != nil { log.Printf("发送文本群组信息失败: %v", err) } + //发送成功回执 + SendResponse(client, err, &message) } // 遍历foundItems并发送每种信息 @@ -100,10 +103,12 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope } fmt.Printf("richMediaMessage: %+v\n", richMediaMessage) - _, err := apiv2.PostGroupMessage(context.TODO(), message.Params.GroupID.(string), richMediaMessage) + _, err = apiv2.PostGroupMessage(context.TODO(), message.Params.GroupID.(string), richMediaMessage) if err != nil { log.Printf("发送 %s 信息失败_send_msg: %v", key, err) } + //发送成功回执 + SendResponse(client, err, &message) } case "guild": //用GroupID给ChannelID赋值,因为我们是把频道虚拟成了群 @@ -175,10 +180,12 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope } groupMessage.Timestamp = time.Now().Unix() // 设置时间戳 - _, err := apiv2.PostC2CMessage(context.TODO(), UserID, groupMessage) + _, err = apiv2.PostC2CMessage(context.TODO(), UserID, groupMessage) if err != nil { log.Printf("发送文本私聊信息失败: %v", err) } + //发送成功回执 + SendResponse(client, err, &message) } // 遍历 foundItems 并发送每种信息 @@ -194,10 +201,12 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope log.Printf("Error: Expected RichMediaMessage type for key %s.", key) continue } - _, err := apiv2.PostC2CMessage(context.TODO(), UserID, richMediaMessage) + _, err = apiv2.PostC2CMessage(context.TODO(), UserID, richMediaMessage) if err != nil { log.Printf("发送 %s 私聊信息失败: %v", key, err) } + //发送成功回执 + SendResponse(client, err, &message) } default: log.Printf("1Unknown message type: %s", msgType) diff --git a/handlers/send_private_msg.go b/handlers/send_private_msg.go index 68423f61..6798eb92 100644 --- a/handlers/send_private_msg.go +++ b/handlers/send_private_msg.go @@ -9,6 +9,7 @@ import ( "time" "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/hoshinonyaruko/gensokyo/config" "github.com/hoshinonyaruko/gensokyo/echo" "github.com/hoshinonyaruko/gensokyo/idmap" "github.com/tencent-connect/botgo/dto" @@ -149,7 +150,7 @@ func handleSendGuildChannelPrivateMsg(client callapi.Client, api openapi.OpenAPI log.Println("foundItems:", foundItems) // 如果messageID为空,通过函数获取 if messageID == "" { - messageID = GetMessageIDByUseridOrGroupid(client.GetAppIDStr(), message.Params.UserID) + messageID = GetMessageIDByUseridOrGroupid(config.GetAppIDStr(), message.Params.UserID) log.Println("通过GetMessageIDByUserid函数获取的message_id:", messageID) } @@ -166,9 +167,11 @@ func handleSendGuildChannelPrivateMsg(client callapi.Client, api openapi.OpenAPI // 优先发送文本信息 if messageText != "" { textMsg, _ := generateReplyMessage(messageID, nil, messageText) - if _, err := apiv2.PostDirectMessage(context.TODO(), dm, textMsg); err != nil { + if _, err = apiv2.PostDirectMessage(context.TODO(), dm, textMsg); err != nil { log.Printf("发送文本信息失败: %v", err) } + //发送成功回执 + SendResponse(client, err, &message) } // 遍历foundItems并发送每种信息 @@ -190,13 +193,17 @@ func handleSendGuildChannelPrivateMsg(client callapi.Client, api openapi.OpenAPI reply.Content = "" // 使用Multipart方法发送 - if _, err := api.PostDirectMessageMultipart(context.TODO(), dm, reply, fileImageData); err != nil { + if _, err = api.PostDirectMessageMultipart(context.TODO(), dm, reply, fileImageData); err != nil { log.Printf("使用multipart发送 %s 信息失败: %v message_id %v", key, err, messageID) } + //发送成功回执 + SendResponse(client, err, &message) } else { - if _, err := api.PostDirectMessage(context.TODO(), dm, reply); err != nil { + if _, err = api.PostDirectMessage(context.TODO(), dm, reply); err != nil { log.Printf("发送 %s 信息失败: %v", key, err) } + //发送成功回执 + SendResponse(client, err, &message) } } diff --git a/main.go b/main.go index b95be7a7..66bd3eb3 100644 --- a/main.go +++ b/main.go @@ -28,17 +28,7 @@ import ( ) // 消息处理器,持有 openapi 对象 -var processor *Processor.Processor - -// 修改函数的返回类型为 *Processor -func NewProcessor(api openapi.OpenAPI, apiv2 openapi.OpenAPI, settings *config.Settings, wsclient *wsclient.WebSocketClient) *Processor.Processor { - return &Processor.Processor{ - Api: api, - Apiv2: apiv2, - Settings: settings, - Wsclient: wsclient, - } -} +var p *Processor.Processors func main() { if _, err := os.Stat("config.yml"); os.IsNotExist(err) { @@ -134,30 +124,40 @@ func main() { } }() - // 创建一个通道来传递 WebSocketClient - wsClientChan := make(chan *wsclient.WebSocketClient) + // 启动多个WebSocket客户端 + wsClients := []*wsclient.WebSocketClient{} + wsClientChan := make(chan *wsclient.WebSocketClient, len(conf.Settings.WsAddress)) + errorChan := make(chan error, len(conf.Settings.WsAddress)) + + for _, wsAddr := range conf.Settings.WsAddress { + go func(address string) { + wsClient, err := wsclient.NewWebSocketClient(address, conf.Settings.AppID, api, apiV2) + if err != nil { + fmt.Printf("Error creating WebSocketClient for address %s: %v\n", address, err) + errorChan <- err + return + } + wsClientChan <- wsClient + }(wsAddr) + } - // 在新的 go 函数中初始化 wsClient - go func() { - wsClient, err := wsclient.NewWebSocketClient(conf.Settings.WsAddress, conf.Settings.AppID, api, apiV2) - if err != nil { - fmt.Printf("Error creating WebSocketClient: %v\n", err) - close(wsClientChan) // 关闭通道表示不再发送值 - return + // Collect results + for i := 0; i < len(conf.Settings.WsAddress); i++ { + select { + case wsClient := <-wsClientChan: + wsClients = append(wsClients, wsClient) + case err := <-errorChan: + fmt.Printf("Error encountered while initializing WebSocketClient: %v\n", err) } - wsClientChan <- wsClient // 将 wsClient 发送到通道 - }() - - // 从通道中接收 wsClient 的值 - wsClient := <-wsClientChan + } - // 确保 wsClient 不为 nil,然后创建 Processor - if wsClient != nil { - fmt.Println("wsClient is successfully initialized.") - processor = NewProcessor(api, apiV2, &conf.Settings, wsClient) + // 确保所有wsClients都已初始化 + if len(wsClients) != len(conf.Settings.WsAddress) { + fmt.Println("Error: Not all wsClients are initialized!") + log.Fatalln("Failed to initialize all WebSocketClients.") } else { - fmt.Println("Error: wsClient is nil!") - log.Fatalln("Failed to initialize WebSocketClient.") + fmt.Println("All wsClients are successfully initialized.") + p = Processor.NewProcessor(api, apiV2, &conf.Settings, wsClients) } //创建idmap服务器 @@ -166,14 +166,16 @@ func main() { //图片上传 调用次数限制 rateLimiter := server.NewRateLimiter() - + //是否启动服务器 + shouldStartServer := !conf.Settings.Lotus || conf.Settings.EnableWsServer //如果连接到其他gensokyo,则不需要启动服务器 - if !conf.Settings.Lotus { + if shouldStartServer { r := gin.Default() r.GET("/getid", server.GetIDHandler) r.POST("/uploadpic", server.UploadBase64ImageHandler(rateLimiter)) r.Static("/channel_temp", "./channel_temp") - r.Run("0.0.0.0:" + conf.Settings.Port) // 注意,这里我更改了端口为你提供的Port,并监听0.0.0.0地址 + r.GET("/ws", server.WsHandlerWithDependencies(api, apiV2)) + r.Run("0.0.0.0:" + conf.Settings.Port) // 监听0.0.0.0地址的Port端口 } // 使用通道来等待信号 @@ -184,9 +186,12 @@ func main() { <-sigCh // 关闭 WebSocket 连接 - err = wsClient.Close() - if err != nil { - fmt.Printf("Error closing WebSocket connection: %v\n", err) + // wsClients 是一个 *wsclient.WebSocketClient 的切片 + for _, client := range wsClients { + err := client.Close() + if err != nil { + fmt.Printf("Error closing WebSocket connection: %v\n", err) + } } } @@ -207,7 +212,7 @@ func ErrorNotifyHandler() event.ErrorNotifyHandler { // ATMessageEventHandler 实现处理 频道at 消息的回调 func ATMessageEventHandler() event.ATMessageEventHandler { return func(event *dto.WSPayload, data *dto.WSATMessageData) error { - return processor.ProcessGuildATMessage(data) + return p.ProcessGuildATMessage(data) } } @@ -238,7 +243,7 @@ func MemberEventHandler() event.GuildMemberEventHandler { // DirectMessageHandler 处理私信事件 func DirectMessageHandler() event.DirectMessageEventHandler { return func(event *dto.WSPayload, data *dto.WSDirectMessageData) error { - return processor.ProcessChannelDirectMessage(data) + return p.ProcessChannelDirectMessage(data) } } @@ -246,7 +251,7 @@ func DirectMessageHandler() event.DirectMessageEventHandler { func CreateMessageHandler() event.MessageEventHandler { return func(event *dto.WSPayload, data *dto.WSMessageData) error { fmt.Println("收到私域信息", data) - return processor.ProcessGuildNormalMessage(data) + return p.ProcessGuildNormalMessage(data) } } @@ -254,22 +259,21 @@ func CreateMessageHandler() event.MessageEventHandler { func InteractionHandler() event.InteractionEventHandler { return func(event *dto.WSPayload, data *dto.WSInteractionData) error { fmt.Println(data) - return processor.ProcessInlineSearch(data) + return p.ProcessInlineSearch(data) } } // GroupATMessageEventHandler 实现处理 群at 消息的回调 func GroupATMessageEventHandler() event.GroupATMessageEventHandler { return func(event *dto.WSPayload, data *dto.WSGroupATMessageData) error { - return processor.ProcessGroupMessage(data) + return p.ProcessGroupMessage(data) } } // C2CMessageEventHandler 实现处理 群私聊 消息的回调 func C2CMessageEventHandler() event.C2CMessageEventHandler { return func(event *dto.WSPayload, data *dto.WSC2CMessageData) error { - log.Print("1111") - return processor.ProcessC2CMessage(data) + return p.ProcessC2CMessage(data) } } @@ -293,7 +297,7 @@ func getHandlerByName(handlerName string) (interface{}, bool) { return CreateMessageHandler(), true case "InteractionHandler": //添加频道互动回应 return InteractionHandler(), true - case "ThreadEventHandler": //发帖事件 + case "ThreadEventHandler": //发帖事件 暂不支持 return nil, false //return ThreadEventHandler(), true case "GroupATMessageEventHandler": //群at信息 diff --git a/server/uploadpic.go b/server/uploadpic.go index 78c419d0..606a76a0 100644 --- a/server/uploadpic.go +++ b/server/uploadpic.go @@ -43,7 +43,7 @@ func NewRateLimiter() *RateLimiter { } } -// 网页后端,图床逻辑,基于gin和www静态文件的简易图床 +// 闭包,网页后端,图床逻辑,基于gin和www静态文件的简易图床 func UploadBase64ImageHandler(rateLimiter *RateLimiter) gin.HandlerFunc { return func(c *gin.Context) { ipAddress := c.ClientIP() diff --git a/server/wsserver.go b/server/wsserver.go new file mode 100644 index 00000000..30d9d2d2 --- /dev/null +++ b/server/wsserver.go @@ -0,0 +1,89 @@ +package server + +import ( + "encoding/json" + "fmt" + "log" + "net/http" + + "github.com/gin-gonic/gin" + "github.com/gorilla/websocket" + "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/hoshinonyaruko/gensokyo/wsclient" + "github.com/tencent-connect/botgo/openapi" +) + +type WebSocketServerClient struct { + Conn *websocket.Conn + API openapi.OpenAPI + APIv2 openapi.OpenAPI +} + +var upgrader = websocket.Upgrader{ + CheckOrigin: func(r *http.Request) bool { + return true + }, +} + +// 使用闭包结构 因为gin需要c *gin.Context固定签名 +func WsHandlerWithDependencies(api openapi.OpenAPI, apiV2 openapi.OpenAPI) gin.HandlerFunc { + return func(c *gin.Context) { + wsHandler(api, apiV2, c) + } +} + +func wsHandler(api openapi.OpenAPI, apiV2 openapi.OpenAPI, c *gin.Context) { + conn, err := upgrader.Upgrade(c.Writer, c.Request, nil) + if err != nil { + log.Printf("Failed to set websocket upgrade: %+v", err) + return + } + + clientIP := c.ClientIP() + headers := c.Request.Header + log.Printf("WebSocket client connected. IP: %s, Headers: %v", clientIP, headers) + + // 创建WebSocketServerClient实例 + client := &WebSocketServerClient{ + Conn: conn, + API: api, + APIv2: apiV2, + } + + defer conn.Close() + + for { + messageType, p, err := conn.ReadMessage() + if err != nil { + log.Printf("Error reading message: %v", err) + return + } + + if messageType == websocket.TextMessage { + processWSMessage(client, p) // 使用WebSocketServerClient而不是直接使用连接 + } + } +} + +func processWSMessage(client *WebSocketServerClient, msg []byte) { + var message callapi.ActionMessage + err := json.Unmarshal(msg, &message) + if err != nil { + log.Printf("Error unmarshalling message: %v, Original message: %s", err, string(msg)) + return + } + + fmt.Println("Received from WebSocket onebotv11 client:", wsclient.TruncateMessage(message, 500)) + // 调用callapi + callapi.CallAPIFromDict(client, client.API, client.APIv2, message) +} + +// 发信息给client +func (c *WebSocketServerClient) SendMessage(message map[string]interface{}) error { + msgBytes, err := json.Marshal(message) + if err != nil { + log.Println("Error marshalling message:", err) + return err + } + return c.Conn.WriteMessage(websocket.TextMessage, msgBytes) +} diff --git a/wsclient/ws.go b/wsclient/ws.go index 4255b1a3..5db10e70 100644 --- a/wsclient/ws.go +++ b/wsclient/ws.go @@ -6,6 +6,7 @@ import ( "fmt" "log" "net/http" + "net/url" "time" "github.com/gorilla/websocket" @@ -18,17 +19,6 @@ type WebSocketClient struct { conn *websocket.Conn api openapi.OpenAPI apiv2 openapi.OpenAPI - appid uint64 -} - -// 获取appid -func (c *WebSocketClient) GetAppID() uint64 { - return c.appid -} - -// 获取appid的字符串形式 -func (c *WebSocketClient) GetAppIDStr() string { - return fmt.Sprintf("%d", c.appid) } // 发送json信息给onebot应用端 @@ -70,13 +60,13 @@ func (c *WebSocketClient) recvMessage(msg []byte) { return } - fmt.Println("Received from onebotv11:", truncateMessage(message, 500)) + fmt.Println("Received from onebotv11 server:", TruncateMessage(message, 500)) // 调用callapi callapi.CallAPIFromDict(c, c.api, c.apiv2, message) } // 截断信息 -func truncateMessage(message callapi.ActionMessage, maxLength int) string { +func TruncateMessage(message callapi.ActionMessage, maxLength int) string { paramsStr, err := json.Marshal(message.Params) if err != nil { return "Error marshalling Params for truncation." @@ -112,7 +102,22 @@ func (c *WebSocketClient) sendHeartbeat(ctx context.Context, botID uint64) { // NewWebSocketClient 创建 WebSocketClient 实例,接受 WebSocket URL、botID 和 openapi.OpenAPI 实例 func NewWebSocketClient(urlStr string, botID uint64, api openapi.OpenAPI, apiv2 openapi.OpenAPI) (*WebSocketClient, error) { - token := config.GetWsToken() // 从配置中获取 token + addresses := config.GetWsAddress() + tokens := config.GetWsToken() + + var token string + for index, address := range addresses { + if address == urlStr && index < len(tokens) { + token = tokens[index] + break + } + } + + // 检查URL中是否有access_token参数 + mp := getParamsFromURI(urlStr) + if val, ok := mp["access_token"]; ok { + token = val + } headers := http.Header{ "User-Agent": []string{"CQHttp/4.15.0"}, @@ -120,11 +125,10 @@ func NewWebSocketClient(urlStr string, botID uint64, api openapi.OpenAPI, apiv2 "X-Self-ID": []string{fmt.Sprintf("%d", botID)}, } - // 如果 token 不为空,将其添加到 headers 中 if token != "" { headers["Authorization"] = []string{"Token " + token} } - + fmt.Printf("准备使用token[%s]连接到[%s]\n", token, urlStr) dialer := websocket.Dialer{ Proxy: http.ProxyFromEnvironment, HandshakeTimeout: 45 * time.Second, @@ -146,7 +150,7 @@ func NewWebSocketClient(urlStr string, botID uint64, api openapi.OpenAPI, apiv2 } } - client := &WebSocketClient{conn: conn, api: api, apiv2: apiv2, appid: botID} + client := &WebSocketClient{conn: conn, api: api, apiv2: apiv2} // Sending initial message similar to your setupB function message := map[string]interface{}{ @@ -177,3 +181,23 @@ func NewWebSocketClient(urlStr string, botID uint64, api openapi.OpenAPI, apiv2 func (ws *WebSocketClient) Close() error { return ws.conn.Close() } + +// getParamsFromURI 解析给定URI中的查询参数,并返回一个映射(map) +func getParamsFromURI(uriStr string) map[string]string { + params := make(map[string]string) + + u, err := url.Parse(uriStr) + if err != nil { + fmt.Printf("Error parsing the URL: %v\n", err) + return params + } + + // 遍历查询参数并将其添加到返回的映射中 + for key, values := range u.Query() { + if len(values) > 0 { + params[key] = values[0] // 如果一个参数有多个值,这里只选择第一个。可以根据需求进行调整。 + } + } + + return params +} From 794346690612cda472efe671d67d624bb5cd06c3 Mon Sep 17 00:00:00 2001 From: cosmo Date: Sat, 28 Oct 2023 13:30:22 +0800 Subject: [PATCH 19/36] add ws server token --- Processor/ProcessC2CMessage.go | 36 ++-------- Processor/ProcessChannelDirectMessage.go | 52 ++------------- Processor/ProcessGroupMessage.go | 18 +---- Processor/ProcessGuildATMessage.go | 35 ++-------- Processor/ProcessGuildNormalMessage.go | 37 ++--------- Processor/Processor.go | 58 ++++++++++++++-- callapi/callapi.go | 5 ++ config/config.go | 13 ++++ config_template.go | 1 + config_template.yml | 3 +- go.mod | 2 + go.sum | 4 ++ handlers/send_group_msg.go | 6 +- handlers/send_msg.go | 6 +- images/upload_api.go | 85 ++++++++++++++++++++++++ main.go | 2 +- readme.md | 2 +- server/uploadpic.go | 76 --------------------- server/wsserver.go | 38 +++++++++-- 19 files changed, 225 insertions(+), 254 deletions(-) create mode 100644 images/upload_api.go diff --git a/Processor/ProcessC2CMessage.go b/Processor/ProcessC2CMessage.go index 50f097e3..41947f98 100644 --- a/Processor/ProcessC2CMessage.go +++ b/Processor/ProcessC2CMessage.go @@ -2,10 +2,8 @@ package Processor import ( - "fmt" "log" "strconv" - "strings" "time" "github.com/hoshinonyaruko/gensokyo/config" @@ -90,21 +88,8 @@ func (p *Processors) ProcessC2CMessage(data *dto.WSC2CMessageData) error { // Convert OnebotGroupMessage to map and send privateMsgMap := structToMap(privateMsg) - var errors []string - - for _, client := range p.Wsclient { - err = client.SendMessage(privateMsgMap) - if err != nil { - // 记录错误信息,但不立即返回 - errors = append(errors, fmt.Sprintf("error sending private message via wsclient: %v", err)) - } - } - - // 在循环结束后处理记录的错误 - if len(errors) > 0 { - // 使用strings.Join合并所有的错误信息 - return fmt.Errorf(strings.Join(errors, "; ")) - } + //上报信息到onebotv11应用端(正反ws) + p.BroadcastMessageToAll(privateMsgMap) } else { //将私聊信息转化为群信息(特殊需求情况下) @@ -177,21 +162,8 @@ func (p *Processors) ProcessC2CMessage(data *dto.WSC2CMessageData) error { // Convert OnebotGroupMessage to map and send groupMsgMap := structToMap(groupMsg) - var errors []string - - for _, client := range p.Wsclient { - err = client.SendMessage(groupMsgMap) - if err != nil { - // 记录错误信息,但不立即返回 - errors = append(errors, fmt.Sprintf("error sending group message via wsclient: %v", err)) - } - } - - // 在循环结束后处理记录的错误 - if len(errors) > 0 { - // 使用strings.Join合并所有的错误信息 - log.Println("Encountered errors while sending to wsclients:", strings.Join(errors, "; ")) - } + //上报信息到onebotv11应用端(正反ws) + p.BroadcastMessageToAll(groupMsgMap) } return nil } diff --git a/Processor/ProcessChannelDirectMessage.go b/Processor/ProcessChannelDirectMessage.go index 52b31940..3c49ffc2 100644 --- a/Processor/ProcessChannelDirectMessage.go +++ b/Processor/ProcessChannelDirectMessage.go @@ -5,7 +5,6 @@ import ( "fmt" "log" "strconv" - "strings" "time" "github.com/hoshinonyaruko/gensokyo/config" @@ -94,21 +93,8 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) // Convert OnebotGroupMessage to map and send privateMsgMap := structToMap(privateMsg) - var errors []string - - for _, client := range p.Wsclient { - err = client.SendMessage(privateMsgMap) - if err != nil { - // 记录错误信息,但不立即返回 - errors = append(errors, fmt.Sprintf("error sending private message via wsclient: %v", err)) - } - } - - // 在循环结束后处理记录的错误 - if len(errors) > 0 { - // 使用strings.Join合并所有的错误信息 - return fmt.Errorf(strings.Join(errors, "; ")) - } + //上报信息到onebotv11应用端(正反ws) + p.BroadcastMessageToAll(privateMsgMap) } else { if !p.Settings.GlobalChannelToGroup { //将频道私信作为普通频道信息 @@ -187,21 +173,8 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) // 将 onebotMsg 结构体转换为 map[string]interface{} msgMap := structToMap(onebotMsg) - var errors []string - - for _, client := range p.Wsclient { - err = client.SendMessage(msgMap) - if err != nil { - // 记录错误信息,但不立即返回 - errors = append(errors, fmt.Sprintf("error sending message via wsclient: %v", err)) - } - } - - // 在循环结束后处理记录的错误 - if len(errors) > 0 { - // 使用strings.Join合并所有的错误信息 - return fmt.Errorf(strings.Join(errors, "; ")) - } + //上报信息到onebotv11应用端(正反ws) + p.BroadcastMessageToAll(msgMap) } else { //将频道信息转化为群信息(特殊需求情况下) //将channelid写入ini,可取出guild_id @@ -287,21 +260,8 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) // Convert OnebotGroupMessage to map and send groupMsgMap := structToMap(groupMsg) - var errors []string - - for _, client := range p.Wsclient { - err = client.SendMessage(groupMsgMap) - if err != nil { - // 记录错误信息,但不立即返回 - errors = append(errors, fmt.Sprintf("error sending group message via wsclient: %v", err)) - } - } - - // 在循环结束后处理记录的错误 - if len(errors) > 0 { - // 使用strings.Join合并所有的错误信息 - return fmt.Errorf(strings.Join(errors, "; ")) - } + //上报信息到onebotv11应用端(正反ws) + p.BroadcastMessageToAll(groupMsgMap) } } diff --git a/Processor/ProcessGroupMessage.go b/Processor/ProcessGroupMessage.go index bb057694..78d31566 100644 --- a/Processor/ProcessGroupMessage.go +++ b/Processor/ProcessGroupMessage.go @@ -5,7 +5,6 @@ import ( "fmt" "log" "strconv" - "strings" "time" "github.com/hoshinonyaruko/gensokyo/config" @@ -108,20 +107,7 @@ func (p *Processors) ProcessGroupMessage(data *dto.WSGroupATMessageData) error { // Convert OnebotGroupMessage to map and send groupMsgMap := structToMap(groupMsg) - var errors []string - - for _, client := range p.Wsclient { - err = client.SendMessage(groupMsgMap) - if err != nil { - // 记录错误信息,但不立即返回 - errors = append(errors, fmt.Sprintf("error sending group message via wsclient: %v", err)) - } - } - - // 在循环结束后处理记录的错误 - if len(errors) > 0 { - // 使用strings.Join合并所有的错误信息 - return fmt.Errorf(strings.Join(errors, "; ")) - } + //上报信息到onebotv11应用端(正反ws) + p.BroadcastMessageToAll(groupMsgMap) return nil } diff --git a/Processor/ProcessGuildATMessage.go b/Processor/ProcessGuildATMessage.go index ea4e5998..70ffb2b7 100644 --- a/Processor/ProcessGuildATMessage.go +++ b/Processor/ProcessGuildATMessage.go @@ -5,7 +5,6 @@ import ( "fmt" "log" "strconv" - "strings" "time" "github.com/hoshinonyaruko/gensokyo/config" @@ -99,21 +98,8 @@ func (p *Processors) ProcessGuildATMessage(data *dto.WSATMessageData) error { // 将 onebotMsg 结构体转换为 map[string]interface{} msgMap := structToMap(onebotMsg) - var errors []string - - for _, client := range p.Wsclient { - err = client.SendMessage(msgMap) - if err != nil { - // 记录错误信息,但不立即返回 - errors = append(errors, fmt.Sprintf("error sending message via wsclient: %v", err)) - } - } - - // 在循环结束后处理记录的错误 - if len(errors) > 0 { - // 使用strings.Join合并所有的错误信息 - return fmt.Errorf(strings.Join(errors, "; ")) - } + //上报信息到onebotv11应用端(正反ws) + p.BroadcastMessageToAll(msgMap) } else { // GlobalChannelToGroup为true时的处理逻辑 //将频道转化为一个群 @@ -202,21 +188,8 @@ func (p *Processors) ProcessGuildATMessage(data *dto.WSATMessageData) error { // Convert OnebotGroupMessage to map and send groupMsgMap := structToMap(groupMsg) - var errors []string - - for _, client := range p.Wsclient { - err = client.SendMessage(groupMsgMap) - if err != nil { - // 记录错误信息,但不立即返回 - errors = append(errors, fmt.Sprintf("error sending group message via wsclient: %v", err)) - } - } - - // 在循环结束后处理记录的错误 - if len(errors) > 0 { - // 使用strings.Join合并所有的错误信息 - return fmt.Errorf(strings.Join(errors, "; ")) - } + //上报信息到onebotv11应用端(正反ws) + p.BroadcastMessageToAll(groupMsgMap) } diff --git a/Processor/ProcessGuildNormalMessage.go b/Processor/ProcessGuildNormalMessage.go index 5eeb84a2..370a0178 100644 --- a/Processor/ProcessGuildNormalMessage.go +++ b/Processor/ProcessGuildNormalMessage.go @@ -5,7 +5,6 @@ import ( "fmt" "log" "strconv" - "strings" "time" "github.com/hoshinonyaruko/gensokyo/config" @@ -98,22 +97,8 @@ func (p *Processors) ProcessGuildNormalMessage(data *dto.WSMessageData) error { // 将 onebotMsg 结构体转换为 map[string]interface{} msgMap := structToMap(onebotMsg) - var errors []string - - // 遍历每一个 wsclient 并发送消息 - for _, client := range p.Wsclient { - err = client.SendMessage(msgMap) - if err != nil { - // 记录错误但不立即返回 - errors = append(errors, fmt.Sprintf("error sending message via wsclient: %v", err)) - } - } - - // 在循环结束后处理记录的错误 - if len(errors) > 0 { - // 使用strings.Join来合并所有的错误信息 - return fmt.Errorf(strings.Join(errors, "; ")) - } + //上报信息到onebotv11应用端(正反ws) + p.BroadcastMessageToAll(msgMap) } else { // GlobalChannelToGroup为true时的处理逻辑 //将频道转化为一个群 @@ -203,22 +188,8 @@ func (p *Processors) ProcessGuildNormalMessage(data *dto.WSMessageData) error { // Convert OnebotGroupMessage to map and send groupMsgMap := structToMap(groupMsg) - var errors []string - - // 遍历每一个 wsclient 并发送消息 - for _, client := range p.Wsclient { - err = client.SendMessage(groupMsgMap) - if err != nil { - // 记录错误但不立即返回 - errors = append(errors, fmt.Sprintf("error sending group message via wsclient: %v", err)) - } - } - - // 在循环结束后处理记录的错误 - if len(errors) > 0 { - // 使用strings.Join来合并所有的错误信息 - return fmt.Errorf(strings.Join(errors, "; ")) - } + //上报信息到onebotv11应用端(正反ws) + p.BroadcastMessageToAll(groupMsgMap) } return nil diff --git a/Processor/Processor.go b/Processor/Processor.go index b0b91915..b66e2d8b 100644 --- a/Processor/Processor.go +++ b/Processor/Processor.go @@ -5,21 +5,24 @@ import ( "encoding/json" "fmt" "reflect" + "strings" "time" + "github.com/hashicorp/go-multierror" + "github.com/hoshinonyaruko/gensokyo/callapi" "github.com/hoshinonyaruko/gensokyo/config" "github.com/hoshinonyaruko/gensokyo/wsclient" - "github.com/tencent-connect/botgo/dto" "github.com/tencent-connect/botgo/openapi" ) // Processor 结构体用于处理消息 type Processors struct { - Api openapi.OpenAPI // API 类型 - Apiv2 openapi.OpenAPI //群的API - Settings *config.Settings // 使用指针 - Wsclient []*wsclient.WebSocketClient // 指针的切片 + Api openapi.OpenAPI // API 类型 + Apiv2 openapi.OpenAPI //群的API + Settings *config.Settings // 使用指针 + Wsclient []*wsclient.WebSocketClient // 指针的切片 + WsServerClients []callapi.WebSocketServerClienter //ws server被连接的客户端 } type Sender struct { @@ -183,3 +186,48 @@ func NewProcessor(api openapi.OpenAPI, apiv2 openapi.OpenAPI, settings *config.S Wsclient: wsclient, } } + +// 发信息给所有连接正向ws的客户端 +func (p *Processors) SendMessageToAllClients(message map[string]interface{}) error { + var result *multierror.Error + + for _, client := range p.WsServerClients { + // 使用接口的方法 + err := client.SendMessage(message) + if err != nil { + // Append the error to our result + result = multierror.Append(result, fmt.Errorf("failed to send to client: %w", err)) + } + } + + // This will return nil if no errors were added + return result.ErrorOrNil() +} + +// 方便快捷的发信息函数 +func (p *Processors) BroadcastMessageToAll(message map[string]interface{}) error { + var errors []string + + // 发送到我们作为客户端的Wsclient + for _, client := range p.Wsclient { + err := client.SendMessage(message) + if err != nil { + errors = append(errors, fmt.Sprintf("error sending private message via wsclient: %v", err)) + } + } + + // 发送到我们作为服务器连接到我们的WsServerClients + for _, serverClient := range p.WsServerClients { + err := serverClient.SendMessage(message) + if err != nil { + errors = append(errors, fmt.Sprintf("error sending private message via WsServerClient: %v", err)) + } + } + + // 在循环结束后处理记录的错误 + if len(errors) > 0 { + return fmt.Errorf(strings.Join(errors, "; ")) + } + + return nil +} diff --git a/callapi/callapi.go b/callapi/callapi.go index ec9221f1..7c39a2d7 100644 --- a/callapi/callapi.go +++ b/callapi/callapi.go @@ -116,6 +116,11 @@ type Client interface { SendMessage(message map[string]interface{}) error } +// 为了解决processor和server循环依赖设计的接口 +type WebSocketServerClienter interface { + SendMessage(message map[string]interface{}) error +} + // 根据action订阅handler处理api type HandlerFunc func(client Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, messgae ActionMessage) diff --git a/config/config.go b/config/config.go index 2e27f98c..bc1bb8cd 100644 --- a/config/config.go +++ b/config/config.go @@ -36,6 +36,7 @@ type Settings struct { WsToken []string `yaml:"ws_token,omitempty"` // 连接wss时使用,不是wss可留空 一一对应 MasterID []string `yaml:"master_id,omitempty"` // 如果需要在群权限判断是管理员是,将user_id填入这里,master_id是一个文本数组 EnableWsServer bool `yaml:"enable_ws_server,omitempty"` //正向ws开关 + WsServerToken string `yaml:"ws_server_token,omitempty"` //正向ws token } // LoadConfig 从文件中加载配置并初始化单例配置 @@ -169,3 +170,15 @@ func GetEnableWsServer() bool { } return instance.Settings.EnableWsServer } + +// 获取WsServerToken的值 +func GetWsServerToken() string { + mu.Lock() + defer mu.Unlock() + + if instance == nil { + log.Println("Warning: instance is nil when trying to get WsServerToken value.") + return "" + } + return instance.Settings.WsServerToken +} diff --git a/config_template.go b/config_template.go index 6200655e..5d762815 100644 --- a/config_template.go +++ b/config_template.go @@ -40,4 +40,5 @@ settings: ws_token: ["","",""] #连接wss地址时服务器所需的token,如果是ws,可留空,按顺序一一对应 master_id : ["1","2"] #群场景尚未开放获取管理员和列表能力,手动从日志中获取需要设置为管理,的user_id并填入(适用插件有权限判断场景) enable_ws_server: true #是否启用正向ws服务器 监听server_dir:port/ws + ws_server_token : "12345" #正向ws的token 不启动正向ws可忽略 ` diff --git a/config_template.yml b/config_template.yml index 6ea4cb5c..2006abc0 100644 --- a/config_template.yml +++ b/config_template.yml @@ -30,4 +30,5 @@ settings: # 如果需要发送base64图片,需要设置正确的公网server_dir和开放对应的port ws_token: ["",""] #连接wss地址时服务器所需的token,如果是ws,可留空,按顺序一一对应 master_id : ["1","2"] #群场景尚未开放获取管理员和列表能力,手动从日志中获取需要设置为管理,的user_id并填入(适用插件有权限判断场景) - enable_ws_server: true #是否启用正向ws服务器 监听server_dir:port/ws \ No newline at end of file + enable_ws_server: true #是否启用正向ws服务器 监听server_dir:port/ws + ws_server_token : "12345" #正向ws的token 不启动正向ws可忽略 \ No newline at end of file diff --git a/go.mod b/go.mod index ae3a48a8..59a71915 100644 --- a/go.mod +++ b/go.mod @@ -24,6 +24,8 @@ require ( github.com/go-playground/validator/v10 v10.14.0 // indirect github.com/go-resty/resty/v2 v2.6.0 // indirect github.com/goccy/go-json v0.10.2 // indirect + github.com/hashicorp/errwrap v1.0.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/leodido/go-urn v1.2.4 // indirect diff --git a/go.sum b/go.sum index 1bed39fa..b72202cc 100644 --- a/go.sum +++ b/go.sum @@ -57,6 +57,10 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= diff --git a/handlers/send_group_msg.go b/handlers/send_group_msg.go index a548c89b..309cbb01 100644 --- a/handlers/send_group_msg.go +++ b/handlers/send_group_msg.go @@ -13,7 +13,7 @@ import ( "github.com/hoshinonyaruko/gensokyo/config" "github.com/hoshinonyaruko/gensokyo/echo" "github.com/hoshinonyaruko/gensokyo/idmap" - "github.com/hoshinonyaruko/gensokyo/server" + "github.com/hoshinonyaruko/gensokyo/images" "github.com/tencent-connect/botgo/dto" "github.com/tencent-connect/botgo/openapi" ) @@ -150,7 +150,7 @@ func generateGroupMessage(id string, foundItems map[string][]string, messageText base64Encoded := base64.StdEncoding.EncodeToString(imageData) // 上传base64编码的图片并获取其URL - imageURL, err := server.UploadBase64ImageToServer(base64Encoded) + imageURL, err := images.UploadBase64ImageToServer(base64Encoded) if err != nil { log.Printf("Error uploading base64 encoded image: %v", err) return nil @@ -187,7 +187,7 @@ func generateGroupMessage(id string, foundItems map[string][]string, messageText return nil } // 将解码的图片数据转换回base64格式并上传 - imageURL, err := server.UploadBase64ImageToServer(base64.StdEncoding.EncodeToString(fileImageData)) + imageURL, err := images.UploadBase64ImageToServer(base64.StdEncoding.EncodeToString(fileImageData)) if err != nil { log.Printf("failed to upload base64 image: %v", err) return nil diff --git a/handlers/send_msg.go b/handlers/send_msg.go index 844ac1d0..3c118480 100644 --- a/handlers/send_msg.go +++ b/handlers/send_msg.go @@ -13,7 +13,7 @@ import ( "github.com/hoshinonyaruko/gensokyo/config" "github.com/hoshinonyaruko/gensokyo/echo" "github.com/hoshinonyaruko/gensokyo/idmap" - "github.com/hoshinonyaruko/gensokyo/server" + "github.com/hoshinonyaruko/gensokyo/images" "github.com/tencent-connect/botgo/dto" "github.com/tencent-connect/botgo/openapi" ) @@ -227,7 +227,7 @@ func generateMessage(id string, foundItems map[string][]string, messageText stri base64Encoded := base64.StdEncoding.EncodeToString(imageData) // 上传base64编码的图片并获取其URL - imageURL, err := server.UploadBase64ImageToServer(base64Encoded) + imageURL, err := images.UploadBase64ImageToServer(base64Encoded) if err != nil { log.Printf("Error uploading base64 encoded image: %v", err) return nil @@ -262,7 +262,7 @@ func generateMessage(id string, foundItems map[string][]string, messageText stri return nil } // 将解码的图片数据转换回base64格式并上传 - imageURL, err := server.UploadBase64ImageToServer(base64.StdEncoding.EncodeToString(fileImageData)) + imageURL, err := images.UploadBase64ImageToServer(base64.StdEncoding.EncodeToString(fileImageData)) if err != nil { log.Printf("failed to upload base64 image: %v", err) return nil diff --git a/images/upload_api.go b/images/upload_api.go new file mode 100644 index 00000000..e2b287ad --- /dev/null +++ b/images/upload_api.go @@ -0,0 +1,85 @@ +package images + +import ( + "encoding/json" + "errors" + "fmt" + "io" + "net" + "net/http" + "net/url" + "strings" + + "github.com/hoshinonyaruko/gensokyo/config" +) + +// 将base64图片通过lotus转换成url +func UploadBase64ImageToServer(base64Image string) (string, error) { + if config.GetLotusValue() { + serverDir := config.GetServer_dir() + serverPort := config.GetPortValue() + url := fmt.Sprintf("http://%s:%s/uploadpic", serverDir, serverPort) + + resp, err := postImageToServer(base64Image, url) + if err != nil { + return "", err + } + return resp, nil + } + + serverDir := config.GetServer_dir() + if isPublicAddress(serverDir) { + url := fmt.Sprintf("http://127.0.0.1:%s/uploadpic", config.GetPortValue()) + + resp, err := postImageToServer(base64Image, url) + if err != nil { + return "", err + } + return resp, nil + } + return "", errors.New("local server uses a private address; image upload failed") +} + +// 请求图床api(图床就是lolus为false的gensokyo) +func postImageToServer(base64Image, targetURL string) (string, error) { + data := url.Values{} + data.Set("base64Image", base64Image) // 修改字段名以与服务器匹配 + + resp, err := http.PostForm(targetURL, data) + if err != nil { + return "", fmt.Errorf("failed to send request: %v", err) + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return "", fmt.Errorf("error response from server: %s", resp.Status) + } + + body, err := io.ReadAll(resp.Body) + if err != nil { + return "", fmt.Errorf("failed to read response body: %v", err) + } + + var responseMap map[string]interface{} + if err := json.Unmarshal(body, &responseMap); err != nil { + return "", fmt.Errorf("failed to unmarshal response: %v", err) + } + + if value, ok := responseMap["url"]; ok { + return fmt.Sprintf("%v", value), nil + } + + return "", fmt.Errorf("URL not found in response") +} + +// 判断是否公网ip 填写域名也会被认为是公网,但需要用户自己确保域名正确解析到gensokyo所在的ip地址 +func isPublicAddress(addr string) bool { + if strings.Contains(addr, "localhost") || strings.HasPrefix(addr, "127.") || strings.HasPrefix(addr, "192.168.") { + return false + } + if net.ParseIP(addr) != nil { + return true + } + // If it's not a recognized IP address format, consider it a domain name (public). + return true +} diff --git a/main.go b/main.go index 66bd3eb3..adf1f270 100644 --- a/main.go +++ b/main.go @@ -174,7 +174,7 @@ func main() { r.GET("/getid", server.GetIDHandler) r.POST("/uploadpic", server.UploadBase64ImageHandler(rateLimiter)) r.Static("/channel_temp", "./channel_temp") - r.GET("/ws", server.WsHandlerWithDependencies(api, apiV2)) + r.GET("/ws", server.WsHandlerWithDependencies(api, apiV2, p)) r.Run("0.0.0.0:" + conf.Settings.Port) // 监听0.0.0.0地址的Port端口 } diff --git a/readme.md b/readme.md index f0eb76a7..af0cfeb1 100644 --- a/readme.md +++ b/readme.md @@ -57,7 +57,7 @@ gensokyo兼容 [OneBot-v11](https://github.com/botuniverse/onebot-11) ,并在 - [ ] HTTP API - [ ] 反向 HTTP POST -- [ ] 正向 WebSocket +- [x] 正向 WebSocket - [x] 反向 WebSocket ### 拓展支持 diff --git a/server/uploadpic.go b/server/uploadpic.go index 606a76a0..1295fe87 100644 --- a/server/uploadpic.go +++ b/server/uploadpic.go @@ -6,19 +6,14 @@ import ( "crypto/rand" "encoding/base64" "encoding/hex" - "encoding/json" "errors" "fmt" "image" _ "image/gif" _ "image/jpeg" _ "image/png" - "io/ioutil" - "net" "net/http" - "net/url" "os" - "strings" "time" "github.com/gin-gonic/gin" @@ -165,74 +160,3 @@ func generateRandomMd5() string { md5Hash := md5.Sum(randomBytes) return hex.EncodeToString(md5Hash[:]) } - -// 将base64图片通过lotus转换成url -func UploadBase64ImageToServer(base64Image string) (string, error) { - if config.GetLotusValue() { - serverDir := config.GetServer_dir() - serverPort := config.GetPortValue() - url := fmt.Sprintf("http://%s:%s/uploadpic", serverDir, serverPort) - - resp, err := postImageToServer(base64Image, url) - if err != nil { - return "", err - } - return resp, nil - } - - serverDir := config.GetServer_dir() - if isPublicAddress(serverDir) { - url := fmt.Sprintf("http://127.0.0.1:%s/uploadpic", config.GetPortValue()) - - resp, err := postImageToServer(base64Image, url) - if err != nil { - return "", err - } - return resp, nil - } - return "", errors.New("local server uses a private address; image upload failed") -} - -// 请求图床api(图床就是lolus为false的gensokyo) -func postImageToServer(base64Image, targetURL string) (string, error) { - data := url.Values{} - data.Set("base64Image", base64Image) // 修改字段名以与服务器匹配 - - resp, err := http.PostForm(targetURL, data) - if err != nil { - return "", fmt.Errorf("failed to send request: %v", err) - } - defer resp.Body.Close() - - if resp.StatusCode != http.StatusOK { - return "", fmt.Errorf("error response from server: %s", resp.Status) - } - - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - return "", fmt.Errorf("failed to read response body: %v", err) - } - - var responseMap map[string]interface{} - if err := json.Unmarshal(body, &responseMap); err != nil { - return "", fmt.Errorf("failed to unmarshal response: %v", err) - } - - if value, ok := responseMap["url"]; ok { - return fmt.Sprintf("%v", value), nil - } - - return "", fmt.Errorf("URL not found in response") -} - -// 判断是否公网ip 填写域名也会被认为是公网,但需要用户自己确保域名正确解析到gensokyo所在的ip地址 -func isPublicAddress(addr string) bool { - if strings.Contains(addr, "localhost") || strings.HasPrefix(addr, "127.") || strings.HasPrefix(addr, "192.168.") { - return false - } - if net.ParseIP(addr) != nil { - return true - } - // If it's not a recognized IP address format, consider it a domain name (public). - return true -} diff --git a/server/wsserver.go b/server/wsserver.go index 30d9d2d2..5fafaa12 100644 --- a/server/wsserver.go +++ b/server/wsserver.go @@ -5,10 +5,13 @@ import ( "fmt" "log" "net/http" + "strings" "github.com/gin-gonic/gin" "github.com/gorilla/websocket" + "github.com/hoshinonyaruko/gensokyo/Processor" "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/hoshinonyaruko/gensokyo/config" "github.com/hoshinonyaruko/gensokyo/wsclient" "github.com/tencent-connect/botgo/openapi" ) @@ -25,14 +28,36 @@ var upgrader = websocket.Upgrader{ }, } +// 确保WebSocketServerClient实现了interfaces.WebSocketServerClienter接口 +var _ callapi.WebSocketServerClienter = &WebSocketServerClient{} + // 使用闭包结构 因为gin需要c *gin.Context固定签名 -func WsHandlerWithDependencies(api openapi.OpenAPI, apiV2 openapi.OpenAPI) gin.HandlerFunc { +func WsHandlerWithDependencies(api openapi.OpenAPI, apiV2 openapi.OpenAPI, p *Processor.Processors) gin.HandlerFunc { return func(c *gin.Context) { - wsHandler(api, apiV2, c) + wsHandler(api, apiV2, p, c) } } -func wsHandler(api openapi.OpenAPI, apiV2 openapi.OpenAPI, c *gin.Context) { +func wsHandler(api openapi.OpenAPI, apiV2 openapi.OpenAPI, p *Processor.Processors, c *gin.Context) { + // 先获取请求头中的token + tokenFromHeader := c.Request.Header.Get("Authorization") + if tokenFromHeader == "" || !strings.HasPrefix(tokenFromHeader, "Token ") { + log.Printf("Connection failed due to missing or invalid token. Headers: %v, Provided token: %s", c.Request.Header, tokenFromHeader) + c.JSON(http.StatusUnauthorized, gin.H{"error": "Missing or invalid token"}) + return + } + + // 从 "Token " 后面提取真正的token值 + token := strings.TrimPrefix(tokenFromHeader, "Token ") + + // 使用GetWsServerToken()来获取有效的token + validToken := config.GetWsServerToken() + if token != validToken { + log.Printf("Connection failed due to incorrect token. Headers: %v, Provided token: %s", c.Request.Header, tokenFromHeader) + c.JSON(http.StatusForbidden, gin.H{"error": "Incorrect token"}) + return + } + conn, err := upgrader.Upgrade(c.Writer, c.Request, nil) if err != nil { log.Printf("Failed to set websocket upgrade: %+v", err) @@ -40,8 +65,7 @@ func wsHandler(api openapi.OpenAPI, apiV2 openapi.OpenAPI, c *gin.Context) { } clientIP := c.ClientIP() - headers := c.Request.Header - log.Printf("WebSocket client connected. IP: %s, Headers: %v", clientIP, headers) + log.Printf("WebSocket client connected. IP: %s", clientIP) // 创建WebSocketServerClient实例 client := &WebSocketServerClient{ @@ -49,6 +73,8 @@ func wsHandler(api openapi.OpenAPI, apiV2 openapi.OpenAPI, c *gin.Context) { API: api, APIv2: apiV2, } + // 将此客户端添加到Processor的WsServerClients列表中 + p.WsServerClients = append(p.WsServerClients, client) defer conn.Close() @@ -60,7 +86,7 @@ func wsHandler(api openapi.OpenAPI, apiV2 openapi.OpenAPI, c *gin.Context) { } if messageType == websocket.TextMessage { - processWSMessage(client, p) // 使用WebSocketServerClient而不是直接使用连接 + processWSMessage(client, p) } } } From 2a1026a83bb38c7e3aca7b5b6a49b8e81bbf42e3 Mon Sep 17 00:00:00 2001 From: cosmo Date: Sat, 28 Oct 2023 14:52:19 +0800 Subject: [PATCH 20/36] bugifx --- callapi/callapi.go | 77 +++++++++++++++------------ handlers/get_group_member_list.go | 9 ++-- handlers/get_guild_list.go | 2 +- handlers/get_guild_service_profile.go | 2 +- handlers/get_login_info.go | 2 +- handlers/get_online_clients.go | 2 +- handlers/get_status.go | 2 +- handlers/get_version_info.go | 2 +- handlers/message_parser.go | 10 ++-- handlers/send_group_msg.go | 16 +++--- handlers/send_guild_channel_msg.go | 18 ++++--- handlers/send_msg.go | 26 +++++---- handlers/send_private_msg.go | 26 +++++---- main.go | 2 +- server/wsserver.go | 43 ++++++++++++--- wsclient/ws.go | 75 ++++++++++++++++++++++---- 16 files changed, 215 insertions(+), 99 deletions(-) diff --git a/callapi/callapi.go b/callapi/callapi.go index 7c39a2d7..4140047c 100644 --- a/callapi/callapi.go +++ b/callapi/callapi.go @@ -4,55 +4,66 @@ import ( "encoding/json" "fmt" "log" - "strconv" "github.com/tencent-connect/botgo/openapi" ) -type EchoData struct { - Seq int `json:"seq"` +// onebot发来的action调用信息 +type ActionMessage struct { + Action string `json:"action"` + Params ParamsContent `json:"params"` + Echo interface{} `json:"echo,omitempty"` } -type EchoContent string +func (a *ActionMessage) UnmarshalJSON(data []byte) error { + type Alias ActionMessage -func (e *EchoContent) UnmarshalJSON(data []byte) error { - // 尝试解析为字符串 - var strVal string - if err := json.Unmarshal(data, &strVal); err == nil { - *e = EchoContent(strVal) - return nil + var rawEcho json.RawMessage + temp := &struct { + *Alias + Echo *json.RawMessage `json:"echo,omitempty"` + }{ + Alias: (*Alias)(a), + Echo: &rawEcho, } - // 尝试解析为整数 - var intVal int - if err := json.Unmarshal(data, &intVal); err == nil { - *e = EchoContent(strconv.Itoa(intVal)) - return nil + if err := json.Unmarshal(data, &temp); err != nil { + return err } - // 尝试解析为EchoData结构体 - var echoData EchoData - if err := json.Unmarshal(data, &echoData); err == nil { - *e = EchoContent(strconv.Itoa(echoData.Seq)) - return nil + if rawEcho != nil { + var lastErr error + + var intValue int + if lastErr = json.Unmarshal(rawEcho, &intValue); lastErr == nil { + a.Echo = intValue + return nil + } + + var strValue string + if lastErr = json.Unmarshal(rawEcho, &strValue); lastErr == nil { + a.Echo = strValue + return nil + } + + var arrValue []interface{} + if lastErr = json.Unmarshal(rawEcho, &arrValue); lastErr == nil { + a.Echo = arrValue + return nil + } + + var objValue map[string]interface{} + if lastErr = json.Unmarshal(rawEcho, &objValue); lastErr == nil { + a.Echo = objValue + return nil + } + + return fmt.Errorf("unable to unmarshal echo: %v", lastErr) } - // 如果都不符合预期,设置为空字符串 - *e = "" return nil } -// func (e EchoContent) String() string { -// return string(e) -// } - -// onebot发来的action调用信息 -type ActionMessage struct { - Action string `json:"action"` - Params ParamsContent `json:"params"` - Echo EchoContent `json:"echo,omitempty"` -} - // params类型 type ParamsContent struct { BotQQ string `json:"botqq"` diff --git a/handlers/get_group_member_list.go b/handlers/get_group_member_list.go index 7117c708..cdc553ef 100644 --- a/handlers/get_group_member_list.go +++ b/handlers/get_group_member_list.go @@ -146,9 +146,12 @@ func buildResponse(members []MemberList, echoValue interface{}) map[string]inter case string: log.Printf("Setting echo as string: %s", v) response["echo"] = v - case callapi.EchoContent: - log.Printf("Setting echo from EchoContent: %s", string(v)) - response["echo"] = string(v) + case []interface{}: + log.Printf("Setting echo as array: %v", v) + response["echo"] = v + case map[string]interface{}: + log.Printf("Setting echo as object: %v", v) + response["echo"] = v default: log.Printf("Unknown type for echo: %T", v) } diff --git a/handlers/get_guild_list.go b/handlers/get_guild_list.go index 97036ae7..5019997e 100644 --- a/handlers/get_guild_list.go +++ b/handlers/get_guild_list.go @@ -44,7 +44,7 @@ func getGuildList(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Open response.Message = "" response.RetCode = 0 response.Status = "ok" - response.Echo = string(message.Echo) // Directly assign the string value + response.Echo = message.Echo // Convert the members slice to a map outputMap := structToMap(response) diff --git a/handlers/get_guild_service_profile.go b/handlers/get_guild_service_profile.go index b4305e09..afd20911 100644 --- a/handlers/get_guild_service_profile.go +++ b/handlers/get_guild_service_profile.go @@ -35,7 +35,7 @@ func getGuildServiceProfile(client callapi.Client, api openapi.OpenAPI, apiv2 op response.Message = "" response.RetCode = 0 response.Status = "ok" - response.Echo = string(message.Echo) // Directly assign the string value + response.Echo = message.Echo // Convert the members slice to a map outputMap := structToMap(response) diff --git a/handlers/get_login_info.go b/handlers/get_login_info.go index 1ac51b61..aaa09704 100644 --- a/handlers/get_login_info.go +++ b/handlers/get_login_info.go @@ -41,7 +41,7 @@ func getLoginInfo(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Open response.Message = "" response.RetCode = 0 response.Status = "ok" - response.Echo = string(message.Echo) + response.Echo = message.Echo // Convert the members slice to a map outputMap := structToMap(response) diff --git a/handlers/get_online_clients.go b/handlers/get_online_clients.go index 6e82aeae..306c3079 100644 --- a/handlers/get_online_clients.go +++ b/handlers/get_online_clients.go @@ -35,7 +35,7 @@ func getOnlineClients(client callapi.Client, api openapi.OpenAPI, apiv2 openapi. response.Message = "" response.RetCode = 0 response.Status = "ok" - response.Echo = string(message.Echo) + response.Echo = message.Echo // Convert the members slice to a map outputMap := structToMap(response) diff --git a/handlers/get_status.go b/handlers/get_status.go index fc74ace7..91b2edd4 100644 --- a/handlers/get_status.go +++ b/handlers/get_status.go @@ -65,7 +65,7 @@ func getStatus(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI response.Message = "" response.RetCode = 0 response.Status = "ok" - response.Echo = string(message.Echo) // Directly assign the string value + response.Echo = message.Echo outputMap := structToMap(response) diff --git a/handlers/get_version_info.go b/handlers/get_version_info.go index 4431a6b2..407b1345 100644 --- a/handlers/get_version_info.go +++ b/handlers/get_version_info.go @@ -59,7 +59,7 @@ func getVersionInfo(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Op response.Message = "" response.RetCode = 0 response.Status = "ok" - response.Echo = string(message.Echo) // Directly assign the string value + response.Echo = message.Echo // Convert the members slice to a map outputMap := structToMap(response) diff --git a/handlers/message_parser.go b/handlers/message_parser.go index c2368bf3..25ed7b3f 100644 --- a/handlers/message_parser.go +++ b/handlers/message_parser.go @@ -19,10 +19,10 @@ type ServerResponse struct { Data struct { MessageID int `json:"message_id"` } `json:"data"` - Message string `json:"message"` - RetCode int `json:"retcode"` - Status string `json:"status"` - Echo string `json:"echo"` + Message string `json:"message"` + RetCode int `json:"retcode"` + Status string `json:"status"` + Echo interface{} `json:"echo"` } // 发送成功回执 todo 返回可互转的messageid @@ -30,7 +30,7 @@ func SendResponse(client callapi.Client, err error, message *callapi.ActionMessa // 设置响应值 response := ServerResponse{} response.Data.MessageID = 0 // todo 实现messageid转换 - response.Echo = string(message.Echo) + response.Echo = message.Echo if err != nil { response.Message = err.Error() // 可选:在响应中添加错误消息 //response.RetCode = -1 // 可以是任何非零值,表示出错 diff --git a/handlers/send_group_msg.go b/handlers/send_group_msg.go index 309cbb01..2f11c57b 100644 --- a/handlers/send_group_msg.go +++ b/handlers/send_group_msg.go @@ -24,7 +24,11 @@ func init() { func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { // 使用 message.Echo 作为key来获取消息类型 - msgType := echo.GetMsgTypeByKey(string(message.Echo)) + var msgType string + if echoStr, ok := message.Echo.(string); ok { + // 当 message.Echo 是字符串类型时执行此块 + msgType = echo.GetMsgTypeByKey(echoStr) + } //如果获取不到 就用user_id获取信息类型 if msgType == "" { @@ -41,12 +45,12 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap // 解析消息内容 messageText, foundItems := parseMessageContent(message.Params) - // 获取 echo 的值 - echostr := string(message.Echo) - // 使用 echo 获取消息ID - messageID := echo.GetMsgIDByKey(echostr) - log.Println("群组发信息对应的message_id:", messageID) + var messageID string + if echoStr, ok := message.Echo.(string); ok { + messageID = echo.GetMsgIDByKey(echoStr) + log.Println("echo取群组发信息对应的message_id:", messageID) + } log.Println("群组发信息messageText:", messageText) log.Println("foundItems:", foundItems) // 如果messageID为空,通过函数获取 diff --git a/handlers/send_guild_channel_msg.go b/handlers/send_guild_channel_msg.go index 892aed6c..fc61b4d7 100644 --- a/handlers/send_guild_channel_msg.go +++ b/handlers/send_guild_channel_msg.go @@ -22,7 +22,11 @@ func init() { func handleSendGuildChannelMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { // 使用 message.Echo 作为key来获取消息类型 - msgType := echo.GetMsgTypeByKey(string(message.Echo)) + var msgType string + if echoStr, ok := message.Echo.(string); ok { + // 当 message.Echo 是字符串类型时执行此块 + msgType = echo.GetMsgTypeByKey(echoStr) + } //如果获取不到 就用user_id获取信息类型 if msgType == "" { @@ -46,12 +50,12 @@ func handleSendGuildChannelMsg(client callapi.Client, api openapi.OpenAPI, apiv2 messageText, foundItems := parseMessageContent(params) channelID := params.ChannelID - // 获取 echo 的值 - echostr := string(message.Echo) - - //messageType := echo.GetMsgTypeByKey(echostr) - messageID := echo.GetMsgIDByKey(echostr) - log.Println("频道发信息对应的message_id:", messageID) + // 使用 echo 获取消息ID + var messageID string + if echoStr, ok := message.Echo.(string); ok { + messageID = echo.GetMsgIDByKey(echoStr) + log.Println("echo取频道发信息对应的message_id:", messageID) + } log.Println("频道发信息messageText:", messageText) log.Println("foundItems:", foundItems) var err error diff --git a/handlers/send_msg.go b/handlers/send_msg.go index 3c118480..734a4673 100644 --- a/handlers/send_msg.go +++ b/handlers/send_msg.go @@ -24,7 +24,11 @@ func init() { func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { // 使用 message.Echo 作为key来获取消息类型 - msgType := echo.GetMsgTypeByKey(string(message.Echo)) + var msgType string + if echoStr, ok := message.Echo.(string); ok { + // 当 message.Echo 是字符串类型时执行此块 + msgType = echo.GetMsgTypeByKey(echoStr) + } //如果获取不到 就用group_id获取信息类型 if msgType == "" { @@ -46,12 +50,12 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope // 解析消息内容 messageText, foundItems := parseMessageContent(message.Params) - // 获取 echo 的值 - echostr := string(message.Echo) - // 使用 echo 获取消息ID - messageID := echo.GetMsgIDByKey(echostr) - log.Println("群组发信息对应的message_id:", messageID) + var messageID string + if echoStr, ok := message.Echo.(string); ok { + messageID = echo.GetMsgIDByKey(echoStr) + log.Println("echo取群组发信息对应的message_id:", messageID) + } log.Println("群组发信息messageText:", messageText) log.Println("foundItems:", foundItems) // 如果messageID为空,通过函数获取 @@ -159,12 +163,12 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope // 解析消息内容 messageText, foundItems := parseMessageContent(message.Params) - // 获取 echo 的值 - echostr := string(message.Echo) - // 使用 echo 获取消息ID - messageID := echo.GetMsgIDByKey(echostr) - log.Println("私聊发信息对应的message_id:", messageID) + var messageID string + if echoStr, ok := message.Echo.(string); ok { + messageID = echo.GetMsgIDByKey(echoStr) + log.Println("echo取私聊发信息对应的message_id:", messageID) + } log.Println("私聊发信息messageText:", messageText) log.Println("foundItems:", foundItems) diff --git a/handlers/send_private_msg.go b/handlers/send_private_msg.go index 6798eb92..91e32218 100644 --- a/handlers/send_private_msg.go +++ b/handlers/send_private_msg.go @@ -22,7 +22,11 @@ func init() { func handleSendPrivateMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { // 使用 message.Echo 作为key来获取消息类型 - msgType := echo.GetMsgTypeByKey(string(message.Echo)) + var msgType string + if echoStr, ok := message.Echo.(string); ok { + // 当 message.Echo 是字符串类型时执行此块 + msgType = echo.GetMsgTypeByKey(echoStr) + } switch msgType { case "group_private": @@ -37,12 +41,12 @@ func handleSendPrivateMsg(client callapi.Client, api openapi.OpenAPI, apiv2 open // 解析消息内容 messageText, foundItems := parseMessageContent(message.Params) - // 获取 echo 的值 - echostr := string(message.Echo) - // 使用 echo 获取消息ID - messageID := echo.GetMsgIDByKey(echostr) - log.Println("私聊发信息对应的message_id:", messageID) + var messageID string + if echoStr, ok := message.Echo.(string); ok { + messageID = echo.GetMsgIDByKey(echoStr) + log.Println("echo取私聊发信息对应的message_id:", messageID) + } log.Println("私聊发信息messageText:", messageText) log.Println("foundItems:", foundItems) @@ -142,10 +146,12 @@ func handleSendGuildChannelPrivateMsg(client callapi.Client, api openapi.OpenAPI } } - // 获取 echo 的值 - echostr := string(message.Echo) - messageID := echo.GetMsgIDByKey(echostr) - log.Println("私聊信息对应的message_id:", messageID) + // 使用 echo 获取消息ID + var messageID string + if echoStr, ok := message.Echo.(string); ok { + messageID = echo.GetMsgIDByKey(echoStr) + log.Println("echo取私聊发信息对应的message_id:", messageID) + } log.Println("私聊信息messageText:", messageText) log.Println("foundItems:", foundItems) // 如果messageID为空,通过函数获取 diff --git a/main.go b/main.go index ad01012a..727f508e 100644 --- a/main.go +++ b/main.go @@ -141,7 +141,7 @@ func main() { }(wsAddr) } - // Collect results + // 获取连接成功后的wsClient for i := 0; i < len(conf.Settings.WsAddress); i++ { select { case wsClient := <-wsClientChan: diff --git a/server/wsserver.go b/server/wsserver.go index 5fafaa12..fd714c72 100644 --- a/server/wsserver.go +++ b/server/wsserver.go @@ -6,6 +6,7 @@ import ( "log" "net/http" "strings" + "time" "github.com/gin-gonic/gin" "github.com/gorilla/websocket" @@ -38,17 +39,29 @@ func WsHandlerWithDependencies(api openapi.OpenAPI, apiV2 openapi.OpenAPI, p *Pr } } +// 处理正向ws客户端的连接 func wsHandler(api openapi.OpenAPI, apiV2 openapi.OpenAPI, p *Processor.Processors, c *gin.Context) { - // 先获取请求头中的token + // 先从请求头中尝试获取token tokenFromHeader := c.Request.Header.Get("Authorization") - if tokenFromHeader == "" || !strings.HasPrefix(tokenFromHeader, "Token ") { - log.Printf("Connection failed due to missing or invalid token. Headers: %v, Provided token: %s", c.Request.Header, tokenFromHeader) - c.JSON(http.StatusUnauthorized, gin.H{"error": "Missing or invalid token"}) - return + token := "" + if tokenFromHeader != "" { + if strings.HasPrefix(tokenFromHeader, "Token ") { + // 从 "Token " 后面提取真正的token值 + token = strings.TrimPrefix(tokenFromHeader, "Token ") + } else if strings.HasPrefix(tokenFromHeader, "Bearer ") { + // 从 "Bearer " 后面提取真正的token值 + token = strings.TrimPrefix(tokenFromHeader, "Bearer ") + } + } else { + // 如果请求头中没有token,则从URL参数中获取 + token = c.Query("access_token") } - // 从 "Token " 后面提取真正的token值 - token := strings.TrimPrefix(tokenFromHeader, "Token ") + if token == "" { + log.Printf("Connection failed due to missing token. Headers: %v", c.Request.Header) + c.JSON(http.StatusUnauthorized, gin.H{"error": "Missing token"}) + return + } // 使用GetWsServerToken()来获取有效的token validToken := config.GetWsServerToken() @@ -76,6 +89,22 @@ func wsHandler(api openapi.OpenAPI, apiV2 openapi.OpenAPI, p *Processor.Processo // 将此客户端添加到Processor的WsServerClients列表中 p.WsServerClients = append(p.WsServerClients, client) + // 获取botID + botID := config.GetAppID() + + // 发送连接成功的消息 + message := map[string]interface{}{ + "meta_event_type": "lifecycle", + "post_type": "meta_event", + "self_id": botID, + "sub_type": "connect", + "time": int(time.Now().Unix()), + } + err = client.SendMessage(message) + if err != nil { + log.Printf("Error sending connection success message: %v\n", err) + } + defer conn.Close() for { diff --git a/wsclient/ws.go b/wsclient/ws.go index 5db10e70..f8c77708 100644 --- a/wsclient/ws.go +++ b/wsclient/ws.go @@ -7,6 +7,7 @@ import ( "log" "net/http" "net/url" + "sync" "time" "github.com/gorilla/websocket" @@ -16,9 +17,14 @@ import ( ) type WebSocketClient struct { - conn *websocket.Conn - api openapi.OpenAPI - apiv2 openapi.OpenAPI + conn *websocket.Conn + api openapi.OpenAPI + apiv2 openapi.OpenAPI + botID uint64 + urlStr string + cancel context.CancelFunc // Add this + mutex sync.Mutex // Mutex for reconnecting + isReconnecting bool } // 发送json信息给onebot应用端 @@ -33,7 +39,6 @@ func (c *WebSocketClient) SendMessage(message map[string]interface{}) error { log.Println("Error sending message:", err) return err } - return nil } @@ -44,13 +49,48 @@ func (c *WebSocketClient) handleIncomingMessages(ctx context.Context, cancel con if err != nil { log.Println("WebSocket connection closed:", err) cancel() // cancel heartbeat goroutine - break + + if !c.isReconnecting { + go c.Reconnect() + } + return } go c.recvMessage(msg) } } +// 断线重连 +func (client *WebSocketClient) Reconnect() { + client.mutex.Lock() + defer client.mutex.Unlock() + + if client.cancel != nil { + client.cancel() // Stop current goroutines + } + + client.isReconnecting = true + defer func() { + client.isReconnecting = false + }() + + for { + time.Sleep(5 * time.Second) + + newClient, err := NewWebSocketClient(client.urlStr, client.botID, client.api, client.apiv2) + if err == nil && newClient != nil { + client.conn = newClient.conn + client.api = newClient.api + client.apiv2 = newClient.apiv2 + client.cancel = newClient.cancel // Update cancel function + + log.Println("Successfully reconnected to WebSocket.") + return + } + log.Println("Failed to reconnect to WebSocket. Retrying in 5 seconds...") + } +} + // 处理信息,调用腾讯api func (c *WebSocketClient) recvMessage(msg []byte) { var message callapi.ActionMessage @@ -100,6 +140,8 @@ func (c *WebSocketClient) sendHeartbeat(ctx context.Context, botID uint64) { } } +const maxRetryAttempts = 5 + // NewWebSocketClient 创建 WebSocketClient 实例,接受 WebSocket URL、botID 和 openapi.OpenAPI 实例 func NewWebSocketClient(urlStr string, botID uint64, api openapi.OpenAPI, apiv2 openapi.OpenAPI) (*WebSocketClient, error) { addresses := config.GetWsAddress() @@ -137,20 +179,31 @@ func NewWebSocketClient(urlStr string, botID uint64, api openapi.OpenAPI, apiv2 var conn *websocket.Conn var err error - // Retry mechanism + retryCount := 0 for { fmt.Println("Dialing URL:", urlStr) conn, _, err = dialer.Dial(urlStr, headers) if err != nil { + retryCount++ + if retryCount > maxRetryAttempts { + log.Printf("Exceeded maximum retry attempts for WebSocket[%v]: %v\n", urlStr, err) + return nil, err + } fmt.Printf("Failed to connect to WebSocket[%v]: %v, retrying in 5 seconds...\n", urlStr, err) time.Sleep(5 * time.Second) // sleep for 5 seconds before retrying } else { - fmt.Printf("成功连接到 %s.\n", urlStr) // 输出连接成功提示 - break // successfully connected, break the loop + fmt.Printf("Successfully connected to %s.\n", urlStr) // 输出连接成功提示 + break // successfully connected, break the loop } } - client := &WebSocketClient{conn: conn, api: api, apiv2: apiv2} + client := &WebSocketClient{ + conn: conn, + api: api, + apiv2: apiv2, + botID: botID, + urlStr: urlStr, + } // Sending initial message similar to your setupB function message := map[string]interface{}{ @@ -172,8 +225,10 @@ func NewWebSocketClient(urlStr string, botID uint64, api openapi.OpenAPI, apiv2 // Starting goroutine for heartbeats and another for listening to messages ctx, cancel := context.WithCancel(context.Background()) + client.cancel = cancel + go client.sendHeartbeat(ctx, botID) - go client.handleIncomingMessages(ctx, cancel) //包含收到信息,调用api部分的代码 + go client.handleIncomingMessages(ctx, cancel) return client, nil } From 2f268286b950d26d0a5ac8ea0b97295756e38cb8 Mon Sep 17 00:00:00 2001 From: cosmo Date: Sat, 28 Oct 2023 15:17:10 +0800 Subject: [PATCH 21/36] fixat --- handlers/message_parser.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/handlers/message_parser.go b/handlers/message_parser.go index 25ed7b3f..935931ab 100644 --- a/handlers/message_parser.go +++ b/handlers/message_parser.go @@ -8,6 +8,7 @@ import ( "strings" "github.com/hoshinonyaruko/gensokyo/callapi" + "github.com/hoshinonyaruko/gensokyo/idmap" "github.com/tencent-connect/botgo/dto" ) @@ -154,7 +155,12 @@ func transformMessageText(messageText string) string { return re.ReplaceAllStringFunc(messageText, func(m string) string { submatches := re.FindStringSubmatch(m) if len(submatches) > 1 { - return "<@!" + submatches[1] + ">" + realUserID, err := idmap.RetrieveRowByIDv2(submatches[1]) + if err != nil { + log.Printf("Error retrieving user ID: %v", err) + return m // 如果出错,返回原始匹配 + } + return "<@!" + realUserID + ">" } return m }) From 007e1af184a109e5a3308b1ac860e70a452c2719 Mon Sep 17 00:00:00 2001 From: cosmo Date: Sat, 28 Oct 2023 15:34:18 +0800 Subject: [PATCH 22/36] bugfix --- handlers/message_parser.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handlers/message_parser.go b/handlers/message_parser.go index 935931ab..5009a1d1 100644 --- a/handlers/message_parser.go +++ b/handlers/message_parser.go @@ -205,7 +205,7 @@ func RevertTransformedText(data interface{}) string { // 获取文件的后缀名 ext := filepath.Ext(attachment.FileName) md5name := strings.TrimSuffix(attachment.FileName, ext) - imageCQ := "[CQ:image,file=" + md5name + ".image,subType=0,url=" + attachment.URL + "]" + imageCQ := "[CQ:image,file=" + md5name + ".image,subType=0,url=" + "http://" + attachment.URL + "]" messageText += imageCQ } } From c41fd778ce029c0659038952dd5f587a24a282ad Mon Sep 17 00:00:00 2001 From: cosmo Date: Sat, 28 Oct 2023 16:33:13 +0800 Subject: [PATCH 23/36] bugfix --- handlers/message_parser.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/handlers/message_parser.go b/handlers/message_parser.go index 5009a1d1..00609383 100644 --- a/handlers/message_parser.go +++ b/handlers/message_parser.go @@ -5,6 +5,7 @@ import ( "log" "path/filepath" "regexp" + "runtime" "strings" "github.com/hoshinonyaruko/gensokyo/callapi" @@ -117,8 +118,15 @@ func parseMessageContent(paramsMessage callapi.ParamsContent) (string, map[strin } // 正则表达式部分 - localImagePattern := regexp.MustCompile(`\[CQ:image,file=file:///([^\]]+?)\]`) - urlImagePattern := regexp.MustCompile(`\[CQ:image,file=http://(.+)\]`) + var localImagePattern *regexp.Regexp + + if runtime.GOOS == "windows" { + localImagePattern = regexp.MustCompile(`\[CQ:image,file=file:///([^\]]+?)\]`) + } else { + localImagePattern = regexp.MustCompile(`\[CQ:image,file=file://([^\]]+?)\]`) + } + + urlImagePattern := regexp.MustCompile(`\[CQ:image,file=https?://(.+)\]`) base64ImagePattern := regexp.MustCompile(`\[CQ:image,file=base64://(.+)\]`) base64RecordPattern := regexp.MustCompile(`\[CQ:record,file=base64://(.+)\]`) From d8354b7f40a87126295ce56023f0e747a255f54d Mon Sep 17 00:00:00 2001 From: cosmo Date: Sat, 28 Oct 2023 16:58:35 +0800 Subject: [PATCH 24/36] test --- echo/echo.go | 6 +++--- handlers/send_guild_channel_msg.go | 5 +++++ handlers/send_msg.go | 5 +++++ handlers/send_private_msg.go | 10 ++++++++++ 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/echo/echo.go b/echo/echo.go index 218e0379..9f820e56 100644 --- a/echo/echo.go +++ b/echo/echo.go @@ -16,13 +16,13 @@ var globalEchoMapping = &EchoMapping{ msgIDMapping: make(map[string]string), } -func (e *EchoMapping) generateKey(appid string, s int64) string { +func (e *EchoMapping) GenerateKey(appid string, s int64) string { return appid + "_" + strconv.FormatInt(s, 10) } // 添加echo对应的类型 func AddMsgType(appid string, s int64, msgType string) { - key := globalEchoMapping.generateKey(appid, s) + key := globalEchoMapping.GenerateKey(appid, s) globalEchoMapping.mu.Lock() defer globalEchoMapping.mu.Unlock() globalEchoMapping.msgTypeMapping[key] = msgType @@ -30,7 +30,7 @@ func AddMsgType(appid string, s int64, msgType string) { // 添加echo对应的messageid func AddMsgID(appid string, s int64, msgID string) { - key := globalEchoMapping.generateKey(appid, s) + key := globalEchoMapping.GenerateKey(appid, s) globalEchoMapping.mu.Lock() defer globalEchoMapping.mu.Unlock() globalEchoMapping.msgIDMapping[key] = msgID diff --git a/handlers/send_guild_channel_msg.go b/handlers/send_guild_channel_msg.go index fc61b4d7..5b6f46ab 100644 --- a/handlers/send_guild_channel_msg.go +++ b/handlers/send_guild_channel_msg.go @@ -56,6 +56,11 @@ func handleSendGuildChannelMsg(client callapi.Client, api openapi.OpenAPI, apiv2 messageID = echo.GetMsgIDByKey(echoStr) log.Println("echo取频道发信息对应的message_id:", messageID) } + // 如果messageID为空,通过函数获取 + if messageID == "" { + messageID = GetMessageIDByUseridOrGroupid(config.GetAppIDStr(), channelID) + log.Println("通过GetMessageIDByUserid函数获取的message_id:", messageID) + } log.Println("频道发信息messageText:", messageText) log.Println("foundItems:", foundItems) var err error diff --git a/handlers/send_msg.go b/handlers/send_msg.go index 734a4673..38716dbb 100644 --- a/handlers/send_msg.go +++ b/handlers/send_msg.go @@ -169,6 +169,11 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope messageID = echo.GetMsgIDByKey(echoStr) log.Println("echo取私聊发信息对应的message_id:", messageID) } + // 如果messageID为空,通过函数获取 + if messageID == "" { + messageID = GetMessageIDByUseridOrGroupid(config.GetAppIDStr(), UserID) + log.Println("通过GetMessageIDByUserid函数获取的message_id:", messageID) + } log.Println("私聊发信息messageText:", messageText) log.Println("foundItems:", foundItems) diff --git a/handlers/send_private_msg.go b/handlers/send_private_msg.go index 91e32218..de98dda0 100644 --- a/handlers/send_private_msg.go +++ b/handlers/send_private_msg.go @@ -47,6 +47,12 @@ func handleSendPrivateMsg(client callapi.Client, api openapi.OpenAPI, apiv2 open messageID = echo.GetMsgIDByKey(echoStr) log.Println("echo取私聊发信息对应的message_id:", messageID) } + // 如果messageID仍然为空,尝试使用config.GetAppID和UserID的组合来获取messageID + // 如果messageID为空,通过函数获取 + if messageID == "" { + messageID = GetMessageIDByUseridOrGroupid(config.GetAppIDStr(), UserID) + log.Println("通过GetMessageIDByUserid函数获取的message_id:", messageID) + } log.Println("私聊发信息messageText:", messageText) log.Println("foundItems:", foundItems) @@ -66,6 +72,8 @@ func handleSendPrivateMsg(client callapi.Client, api openapi.OpenAPI, apiv2 open if err != nil { log.Printf("发送文本私聊信息失败: %v", err) } + //发送成功回执 + SendResponse(client, err, &message) } // 遍历 foundItems 并发送每种信息 @@ -85,6 +93,8 @@ func handleSendPrivateMsg(client callapi.Client, api openapi.OpenAPI, apiv2 open if err != nil { log.Printf("发送 %s 私聊信息失败: %v", key, err) } + //发送成功回执 + SendResponse(client, err, &message) } case "guild_private": //当收到发私信调用 并且来源是频道 From f08d9d7cc8f8c8a797eb4883e659d571301b562c Mon Sep 17 00:00:00 2001 From: cosmo Date: Sat, 28 Oct 2023 17:14:12 +0800 Subject: [PATCH 25/36] test2 --- handlers/get_group_info.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/handlers/get_group_info.go b/handlers/get_group_info.go index 4e89d21d..86b3d383 100644 --- a/handlers/get_group_info.go +++ b/handlers/get_group_info.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "log" - "strconv" "github.com/hoshinonyaruko/gensokyo/callapi" "github.com/hoshinonyaruko/gensokyo/idmap" @@ -28,11 +27,13 @@ type OnebotGroupInfo struct { } func ConvertGuildToGroupInfo(guild *dto.Guild, GroupId string) *OnebotGroupInfo { - groupidstr, err := strconv.ParseInt(GroupId, 10, 64) + // 使用idmap.StoreIDv2映射GroupId到一个int64的值 + groupid64, err := idmap.StoreIDv2(GroupId) if err != nil { - log.Printf("groupidstr: %v", err) + log.Printf("Error storing GroupID: %v", err) return nil } + ts, err := guild.JoinedAt.Time() if err != nil { log.Printf("转换JoinedAt失败: %v", err) @@ -41,7 +42,7 @@ func ConvertGuildToGroupInfo(guild *dto.Guild, GroupId string) *OnebotGroupInfo groupCreateTime := uint32(ts.Unix()) return &OnebotGroupInfo{ - GroupID: groupidstr, + GroupID: groupid64, GroupName: guild.Name, GroupMemo: guild.Desc, GroupCreateTime: groupCreateTime, From 4dd6e159dd650fd7b5ea8cdfe7ab10df53c90787 Mon Sep 17 00:00:00 2001 From: cosmo Date: Tue, 31 Oct 2023 17:11:53 +0800 Subject: [PATCH 26/36] add url service --- callapi/callapi.go | 1 + config/config.go | 39 +++++ config_template.go | 4 + config_template.yml | 6 +- gensokyo.db | Bin 0 -> 32768 bytes go.mod | 2 + go.sum | 4 + handlers/message_parser.go | 15 +- idmap/cMapping.go | 40 ----- main.go | 58 +++++- server/wsserver.go | 15 ++ url/shorturl.go | 349 +++++++++++++++++++++++++++++++++++++ 12 files changed, 489 insertions(+), 44 deletions(-) create mode 100644 gensokyo.db delete mode 100644 idmap/cMapping.go create mode 100644 url/shorturl.go diff --git a/callapi/callapi.go b/callapi/callapi.go index 4140047c..df0f5cb8 100644 --- a/callapi/callapi.go +++ b/callapi/callapi.go @@ -130,6 +130,7 @@ type Client interface { // 为了解决processor和server循环依赖设计的接口 type WebSocketServerClienter interface { SendMessage(message map[string]interface{}) error + Close() error } // 根据action订阅handler处理api diff --git a/config/config.go b/config/config.go index bc1bb8cd..9a3f5ee7 100644 --- a/config/config.go +++ b/config/config.go @@ -37,6 +37,9 @@ type Settings struct { MasterID []string `yaml:"master_id,omitempty"` // 如果需要在群权限判断是管理员是,将user_id填入这里,master_id是一个文本数组 EnableWsServer bool `yaml:"enable_ws_server,omitempty"` //正向ws开关 WsServerToken string `yaml:"ws_server_token,omitempty"` //正向ws token + IdentifyFile bool `yaml:"identify_file"` // 域名校验文件 + Crt string `yaml:"crt"` + Key string `yaml:"key"` } // LoadConfig 从文件中加载配置并初始化单例配置 @@ -182,3 +185,39 @@ func GetWsServerToken() string { } return instance.Settings.WsServerToken } + +// 获取identify_file的值 +func GetIdentifyFile() bool { + mu.Lock() + defer mu.Unlock() + + if instance == nil { + log.Println("Warning: instance is nil when trying to get identify file name.") + return false + } + return instance.Settings.IdentifyFile +} + +// 获取crt路径 +func GetCrtPath() string { + mu.Lock() + defer mu.Unlock() + + if instance == nil { + log.Println("Warning: instance is nil when trying to get crt path.") + return "" + } + return instance.Settings.Crt +} + +// 获取key路径 +func GetKeyPath() string { + mu.Lock() + defer mu.Unlock() + + if instance == nil { + log.Println("Warning: instance is nil when trying to get key path.") + return "" + } + return instance.Settings.Key +} diff --git a/config_template.go b/config_template.go index 5d762815..09f0a64a 100644 --- a/config_template.go +++ b/config_template.go @@ -41,4 +41,8 @@ settings: master_id : ["1","2"] #群场景尚未开放获取管理员和列表能力,手动从日志中获取需要设置为管理,的user_id并填入(适用插件有权限判断场景) enable_ws_server: true #是否启用正向ws服务器 监听server_dir:port/ws ws_server_token : "12345" #正向ws的token 不启动正向ws可忽略 + ws_server_token : "12345" #正向ws的token 不启动正向ws可忽略 + identify_file: true #自动生成域名校验文件,在q.qq.com配置信息URL,在server_dir填入自己已备案域名,正确解析到机器人所在服务器ip地址,机器人即可发送链接 + crt: "" #证书路径 从你的域名服务商或云服务商申请签发SSL证书(qq要求SSL) + key: "" #密钥路径 Apache(crt文件、key文件)示例: "C:\\123.key" \需要双写成\\ ` diff --git a/config_template.yml b/config_template.yml index 2006abc0..7f8129e8 100644 --- a/config_template.yml +++ b/config_template.yml @@ -31,4 +31,8 @@ settings: ws_token: ["",""] #连接wss地址时服务器所需的token,如果是ws,可留空,按顺序一一对应 master_id : ["1","2"] #群场景尚未开放获取管理员和列表能力,手动从日志中获取需要设置为管理,的user_id并填入(适用插件有权限判断场景) enable_ws_server: true #是否启用正向ws服务器 监听server_dir:port/ws - ws_server_token : "12345" #正向ws的token 不启动正向ws可忽略 \ No newline at end of file + ws_server_token : "12345" #正向ws的token 不启动正向ws可忽略 + ws_server_token : "12345" #正向ws的token 不启动正向ws可忽略 + identify_file: true #自动生成域名校验文件,在q.qq.com配置信息URL,在server_dir填入自己已备案域名,正确解析到机器人所在服务器ip地址,机器人即可发送链接 + crt: "" #证书路径 从你的域名服务商或云服务商申请签发SSL证书(qq要求SSL) + key: "" #密钥路径 Apache(crt文件、key文件)示例: "C:\\123.key" \需要双写成\\ \ No newline at end of file diff --git a/gensokyo.db b/gensokyo.db new file mode 100644 index 0000000000000000000000000000000000000000..5ab9bd33a79ac7e2f391150744b1351ca707bf7a GIT binary patch literal 32768 zcmeI(F>b;z6aY{cS_BdUM?k$nkHFpui3>2XApzn9+@lg3cj&^(*pZPvcOW7DNFaue zK|D*zx13nAU#4$6Db?jY$Ku#8T2*~;+nyh%cCK`C?B;mdkBaqnbBOmu0t5&UAV7cs z0RjXF5FkLHIRbBaDF4m>FKYv3pUD4vx&P<%_h+~H`fJY2jD!FI0t5&UAV7cs0RjXF z5D0VYXSra5FkK+ z009C72oNAZ;3^R3{#&X36QH_Rzy4R}`iJGUoXr=j$@qI&)*qHwFnIV-BLM;g2oNAZ zfB*pk1PBly&;)_l=fB_ok8=S{7^5)|AV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly dK!5-N0t5&UAV7cs0RjXF5FkK+0D)H*I0M&06H5R9 literal 0 HcmV?d00001 diff --git a/go.mod b/go.mod index 59a71915..565bbfda 100644 --- a/go.mod +++ b/go.mod @@ -45,4 +45,6 @@ require ( golang.org/x/sys v0.8.0 // indirect golang.org/x/text v0.9.0 // indirect google.golang.org/protobuf v1.30.0 // indirect + mvdan.cc/xurls v1.1.0 + mvdan.cc/xurls/v2 v2.5.0 // indirect ) diff --git a/go.sum b/go.sum index b72202cc..977f04d5 100644 --- a/go.sum +++ b/go.sum @@ -193,4 +193,8 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +mvdan.cc/xurls v1.1.0 h1:kj0j2lonKseISJCiq1Tfk+iTv65dDGCl0rTbanXJGGc= +mvdan.cc/xurls v1.1.0/go.mod h1:TNWuhvo+IqbUCmtUIb/3LJSQdrzel8loVpgFm0HikbI= +mvdan.cc/xurls/v2 v2.5.0 h1:lyBNOm8Wo71UknhUs4QTFUNNMyxy2JEIaKKo0RWOh+8= +mvdan.cc/xurls/v2 v2.5.0/go.mod h1:yQgaGQ1rFtJUzkmKiHYSSfuQxqfYmd//X6PxvholpeE= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/handlers/message_parser.go b/handlers/message_parser.go index 00609383..074cf026 100644 --- a/handlers/message_parser.go +++ b/handlers/message_parser.go @@ -10,7 +10,9 @@ import ( "github.com/hoshinonyaruko/gensokyo/callapi" "github.com/hoshinonyaruko/gensokyo/idmap" + "github.com/hoshinonyaruko/gensokyo/url" "github.com/tencent-connect/botgo/dto" + "mvdan.cc/xurls" //xurls是一个从文本提取url的库 适用于多种场景 ) var BotID string @@ -58,6 +60,7 @@ func SendResponse(client callapi.Client, err error, message *callapi.ActionMessa return nil } +// 信息处理函数 func parseMessageContent(paramsMessage callapi.ParamsContent) (string, map[string][]string) { messageText := "" @@ -156,11 +159,11 @@ func parseMessageContent(paramsMessage callapi.ParamsContent) (string, map[strin return messageText, foundItems } +// at处理和链接处理 func transformMessageText(messageText string) string { // 使用正则表达式来查找所有[CQ:at,qq=数字]的模式 re := regexp.MustCompile(`\[CQ:at,qq=(\d+)\]`) - // 使用正则表达式来替换找到的模式为<@!数字> - return re.ReplaceAllStringFunc(messageText, func(m string) string { + messageText = re.ReplaceAllStringFunc(messageText, func(m string) string { submatches := re.FindStringSubmatch(m) if len(submatches) > 1 { realUserID, err := idmap.RetrieveRowByIDv2(submatches[1]) @@ -172,6 +175,14 @@ func transformMessageText(messageText string) string { } return m }) + + // 使用xurls来查找和替换所有的URL + messageText = xurls.Relaxed.ReplaceAllStringFunc(messageText, func(originalURL string) string { + shortURL := url.GenerateShortURL(originalURL) + // 使用getBaseURL函数来获取baseUrl并与shortURL组合 + return url.GetBaseURL() + "/url/" + shortURL + }) + return messageText } // 处理at和其他定形文到onebotv11格式(cq码) diff --git a/idmap/cMapping.go b/idmap/cMapping.go deleted file mode 100644 index 7975f940..00000000 --- a/idmap/cMapping.go +++ /dev/null @@ -1,40 +0,0 @@ -// 访问idmaps -package idmap - -import ( - "encoding/json" - "fmt" - "net/http" -) - -type CompatibilityMapping struct{} - -// SetID 对外部API进行写操作,返回映射的值 -func (c *CompatibilityMapping) SetID(id string) (int, error) { - return c.getIDByType(id, "1") -} - -// GetOriginalID 使用映射值获取原始值 -func (c *CompatibilityMapping) GetOriginalID(mappedID string) (int, error) { - return c.getIDByType(mappedID, "2") -} - -func (c *CompatibilityMapping) getIDByType(id, typeVal string) (int, error) { - resp, err := http.Get(fmt.Sprintf("http://127.0.0.1:15817/getid?id=%s&type=%s", id, typeVal)) - if err != nil { - return 0, err - } - defer resp.Body.Close() - - var result map[string]int - if err := json.NewDecoder(resp.Body).Decode(&result); err != nil { - return 0, err - } - - value, ok := result["row"] - if !ok { - return 0, fmt.Errorf("row not found in the response") - } - - return value, nil -} diff --git a/main.go b/main.go index 727f508e..969e9d9b 100644 --- a/main.go +++ b/main.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "log" + "net/http" "os" "os/signal" "syscall" @@ -16,6 +17,7 @@ import ( "github.com/hoshinonyaruko/gensokyo/handlers" "github.com/hoshinonyaruko/gensokyo/idmap" "github.com/hoshinonyaruko/gensokyo/server" + "github.com/hoshinonyaruko/gensokyo/url" "github.com/hoshinonyaruko/gensokyo/wsclient" "github.com/gin-gonic/gin" @@ -169,13 +171,49 @@ func main() { //是否启动服务器 shouldStartServer := !conf.Settings.Lotus || conf.Settings.EnableWsServer //如果连接到其他gensokyo,则不需要启动服务器 + var httpServer *http.Server if shouldStartServer { r := gin.Default() r.GET("/getid", server.GetIDHandler) r.POST("/uploadpic", server.UploadBase64ImageHandler(rateLimiter)) r.Static("/channel_temp", "./channel_temp") r.GET("/ws", server.WsHandlerWithDependencies(api, apiV2, p)) - r.Run("0.0.0.0:" + conf.Settings.Port) // 监听0.0.0.0地址的Port端口 + r.POST("/url", url.CreateShortURLHandler) + r.GET("/url/:shortURL", url.RedirectFromShortURLHandler) + if config.GetIdentifyFile() { + appIDStr := config.GetAppIDStr() + fileName := appIDStr + ".json" + r.GET("/"+fileName, func(c *gin.Context) { + content := fmt.Sprintf(`{"bot_appid":%d}`, config.GetAppID()) + c.Header("Content-Type", "application/json") + c.String(200, content) + }) + } + // 创建一个http.Server实例 + httpServer = &http.Server{ + Addr: "0.0.0.0:" + conf.Settings.Port, + Handler: r, + } + // 在一个新的goroutine中启动Gin服务器 + go func() { + if conf.Settings.Port == "443" { + // 使用HTTPS + crtPath := config.GetCrtPath() + keyPath := config.GetKeyPath() + if crtPath == "" || keyPath == "" { + log.Fatalf("crt or key path is missing for HTTPS") + return + } + if err := httpServer.ListenAndServeTLS(crtPath, keyPath); err != nil && err != http.ErrServerClosed { + log.Fatalf("listen (HTTPS): %s\n", err) + } + } else { + // 使用HTTP + if err := httpServer.ListenAndServe(); err != nil && err != http.ErrServerClosed { + log.Fatalf("listen: %s\n", err) + } + } + }() } // 使用通道来等待信号 @@ -193,6 +231,24 @@ func main() { fmt.Printf("Error closing WebSocket connection: %v\n", err) } } + + // 关闭BoltDB数据库 + url.CloseDB() + idmap.CloseDB() + + // 在关闭WebSocket客户端之前 + for _, wsClient := range p.WsServerClients { + if err := wsClient.Close(); err != nil { + log.Printf("Error closing WebSocket server client: %v\n", err) + } + } + + // 使用一个5秒的超时优雅地关闭Gin服务器 + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + if err := httpServer.Shutdown(ctx); err != nil { + log.Fatal("Server forced to shutdown:", err) + } } // ReadyHandler 自定义 ReadyHandler 感知连接成功事件 diff --git a/server/wsserver.go b/server/wsserver.go index fd714c72..55b89bd3 100644 --- a/server/wsserver.go +++ b/server/wsserver.go @@ -105,6 +105,17 @@ func wsHandler(api openapi.OpenAPI, apiV2 openapi.OpenAPI, p *Processor.Processo log.Printf("Error sending connection success message: %v\n", err) } + // 在defer语句之前运行 + defer func() { + // 移除客户端从WsServerClients + for i, wsClient := range p.WsServerClients { + if wsClient == client { + p.WsServerClients = append(p.WsServerClients[:i], p.WsServerClients[i+1:]...) + break + } + } + }() + //退出时候的清理 defer conn.Close() for { @@ -142,3 +153,7 @@ func (c *WebSocketServerClient) SendMessage(message map[string]interface{}) erro } return c.Conn.WriteMessage(websocket.TextMessage, msgBytes) } + +func (client *WebSocketServerClient) Close() error { + return client.Conn.Close() +} diff --git a/url/shorturl.go b/url/shorturl.go new file mode 100644 index 00000000..83105a50 --- /dev/null +++ b/url/shorturl.go @@ -0,0 +1,349 @@ +package url + +import ( + "bytes" + "crypto/sha256" + "encoding/base64" + "encoding/hex" + "encoding/json" + "fmt" + "log" + "math/rand" + "net" + "net/http" + "net/url" + "strings" + "time" + + "github.com/boltdb/bolt" + "github.com/gin-gonic/gin" + "github.com/hoshinonyaruko/gensokyo/config" +) + +const ( + bucketName = "shortURLs" +) + +var ( + db *bolt.DB +) + +const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" +const length = 6 + +func generateRandomString() string { + rand.Seed(time.Now().UnixNano()) + result := make([]byte, length) + for i := range result { + result[i] = charset[rand.Intn(len(charset))] + } + return string(result) +} + +func generateHashedString(url string) string { + hash := sha256.Sum256([]byte(url)) + return hex.EncodeToString(hash[:3]) // 取前3个字节,得到6个字符的16进制表示 +} + +func init() { + var err error + db, err = bolt.Open("gensokyo.db", 0600, nil) + if err != nil { + panic(err) + } + + // Ensure bucket exists + err = db.Update(func(tx *bolt.Tx) error { + _, err := tx.CreateBucketIfNotExists([]byte(bucketName)) + if err != nil { + return fmt.Errorf("failed to create or get the bucket: %v", err) + } + return nil + }) + if err != nil { + panic(fmt.Sprintf("Error initializing the database: %v", err)) + } +} + +// 验证链接是否合法 +func isValidURL(toTest string) bool { + parsedURL, err := url.ParseRequestURI(toTest) + if err != nil { + return false + } + if parsedURL.Scheme != "http" && parsedURL.Scheme != "https" { + return false + } + + // 阻止localhost和本地IP地址 + host := parsedURL.Hostname() + localHostnames := []string{"localhost", "127.0.0.1", "::1"} + for _, localHost := range localHostnames { + if host == localHost { + return false + } + } + + // 检查是否是私有IP地址 + return !isPrivateIP(host) +} + +// 检查是否是私有IP地址 +func isPrivateIP(ipStr string) bool { + privateIPBlocks := []string{ + "10.0.0.0/8", + "172.16.0.0/12", + "192.168.0.0/16", + } + ip := net.ParseIP(ipStr) + for _, block := range privateIPBlocks { + _, ipnet, err := net.ParseCIDR(block) + if err != nil { + continue + } + if ipnet.Contains(ip) { + return true + } + } + return false +} + +// 检查和解码可能的Base64编码的URL +func decodeBase64IfNeeded(input string) string { + if len(input)%4 == 0 { // 一个简单的检查来看它是否可能是Base64 + decoded, err := base64.StdEncoding.DecodeString(input) + if err == nil { + return string(decoded) + } + } + return input +} + +// 生成短链接 +func GenerateShortURL(longURL string) string { + if config.GetLotusValue() { + serverDir := config.GetServer_dir() + portValue := config.GetPortValue() + url := fmt.Sprintf("http://%s:%s/url", serverDir, portValue) + + payload := map[string]string{"longURL": longURL} + jsonPayload, err := json.Marshal(payload) + if err != nil { + log.Printf("Error marshaling payload: %v", err) + return "" + } + + resp, err := http.Post(url, "application/json", bytes.NewBuffer(jsonPayload)) + if err != nil { + log.Printf("Error while generating short URL: %v", err) + return "" + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + log.Printf("Received non-200 status code: %d from server: %v", resp.StatusCode, url) + return "" + } + + var response map[string]interface{} + err = json.NewDecoder(resp.Body).Decode(&response) + if err != nil { + log.Println("Error decoding response") + return "" + } + + shortURL, ok := response["shortURL"].(string) + if !ok { + log.Println("shortURL not found or not a string in the response") + return "" + } + + return shortURL + + } else { + shortURL := generateHashedString(longURL) + + exists, err := existsInDB(shortURL) + if err != nil { + log.Printf("Error checking if shortURL exists in DB: %v", err) + return "" // 如果有错误, 返回空的短链接 + } + if exists { + for { + shortURL = generateRandomString() + exists, err := existsInDB(shortURL) + if err != nil { + log.Printf("Error checking if shortURL exists in DB: %v", err) + return "" // 如果有错误, 返回空的短链接 + } + if !exists { + break + } + } + } + + // 存储短URL和对应的长URL + err = storeURL(shortURL, longURL) + if err != nil { + log.Printf("Error storing URL in DB: %v", err) + return "" + } + + return shortURL + } +} + +func existsInDB(shortURL string) (bool, error) { + exists := false + err := db.View(func(tx *bolt.Tx) error { + b := tx.Bucket([]byte(bucketName)) + v := b.Get([]byte(shortURL)) + if v != nil { + exists = true + } + return nil + }) + if err != nil { + log.Printf("Error accessing the database: %v", err) // 记录错误 + return false, err + } + return exists, nil +} + +// 从数据库获取短链接 +func getLongURLFromDB(shortURL string) (string, error) { + if config.GetLotusValue() { + serverDir := config.GetServer_dir() + portValue := config.GetPortValue() + url := fmt.Sprintf("http://%s:%s/url/%s", serverDir, portValue, shortURL) + + resp, err := http.Get(url) + if err != nil { + return "", err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + log.Printf("Received non-200 status code: %d while fetching long URL from server: %v", resp.StatusCode, url) + return "", fmt.Errorf("error fetching long URL from remote server with status code: %d", resp.StatusCode) + } + + var response map[string]interface{} + err = json.NewDecoder(resp.Body).Decode(&response) + if err != nil { + return "", fmt.Errorf("error decoding response from server") + } + return response["longURL"].(string), nil + } else { + var longURL string + err := db.View(func(tx *bolt.Tx) error { + b := tx.Bucket([]byte(bucketName)) + v := b.Get([]byte(shortURL)) + if v == nil { + return fmt.Errorf("URL not found") + } + longURL = string(v) + return nil + }) + return longURL, err + } +} + +// storeURL 存储长URL和对应的短URL +func storeURL(shortURL, longURL string) error { + return db.Update(func(tx *bolt.Tx) error { + b := tx.Bucket([]byte(bucketName)) + return b.Put([]byte(shortURL), []byte(longURL)) + }) +} + +// 安全性检查 +func isMalicious(decoded string) bool { + lowerDecoded := strings.ToLower(decoded) + + // 检查javascript协议,用于防止XSS + if strings.HasPrefix(lowerDecoded, "javascript:") { + return true + } + + // 检查data协议,可能被用于各种攻击 + if strings.HasPrefix(lowerDecoded, "data:") { + return true + } + + // 检查常见的HTML标签,这可能用于指示XSS攻击 + for _, tag := range []string{" Date: Tue, 31 Oct 2023 20:22:59 +0800 Subject: [PATCH 27/36] add url service --- Processor/ProcessChannelDirectMessage.go | 19 ++++++++++--------- Processor/ProcessGroupMessage.go | 2 -- Processor/ProcessGuildATMessage.go | 22 +++++++++++----------- Processor/ProcessGuildNormalMessage.go | 22 +++++++++++----------- handlers/get_group_info.go | 18 ++++++++---------- handlers/get_group_member_list.go | 7 ++++++- handlers/send_group_msg.go | 15 +++++++-------- handlers/send_msg.go | 15 +++++++-------- handlers/send_private_msg.go | 8 ++++++-- handlers/set_group_ban.go | 10 +++++++--- handlers/set_group_whole_ban.go | 8 ++++++-- idmap/service.go | 11 +++++++++-- url/shorturl.go | 21 ++------------------- 13 files changed, 90 insertions(+), 88 deletions(-) diff --git a/Processor/ProcessChannelDirectMessage.go b/Processor/ProcessChannelDirectMessage.go index 3c49ffc2..57f545ac 100644 --- a/Processor/ProcessChannelDirectMessage.go +++ b/Processor/ProcessChannelDirectMessage.go @@ -41,6 +41,7 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) if err != nil { log.Fatalf("Error storing ID: %v", err) } + //将真实id写入数据库,可取出ChannelID idmap.WriteConfigv2(data.Author.ID, "channel_id", data.ChannelID) //将channelid写入数据库,可取出guild_id @@ -177,20 +178,20 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) p.BroadcastMessageToAll(msgMap) } else { //将频道信息转化为群信息(特殊需求情况下) - //将channelid写入ini,可取出guild_id - idmap.WriteConfigv2(data.ChannelID, "guild_id", data.GuildID) + //将channelid写入bolt,可取出guild_id + ChannelID64, err := idmap.StoreIDv2(data.ChannelID) + if err != nil { + log.Printf("Error storing ID: %v", err) + return nil + } + //转成int再互转 + idmap.WriteConfigv2(fmt.Sprint(ChannelID64), "guild_id", data.GuildID) //转换at messageText := handlers.RevertTransformedText(data) //转换appid AppIDString := strconv.FormatUint(p.Settings.AppID, 10) //构造echo echostr := AppIDString + "_" + strconv.FormatInt(s, 10) - //把频道号作为群号 - channelIDInt, err := strconv.Atoi(data.ChannelID) - if err != nil { - // handle error, perhaps return it - return fmt.Errorf("failed to convert ChannelID to int: %v", err) - } //映射str的userid到int userid64, err := idmap.StoreIDv2(data.Author.ID) if err != nil { @@ -214,7 +215,7 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) RawMessage: messageText, Message: segmentedMessages, MessageID: messageID, - GroupID: int64(channelIDInt), + GroupID: ChannelID64, MessageType: "group", PostType: "message", SelfID: int64(p.Settings.AppID), diff --git a/Processor/ProcessGroupMessage.go b/Processor/ProcessGroupMessage.go index 78d31566..b8a2a2ea 100644 --- a/Processor/ProcessGroupMessage.go +++ b/Processor/ProcessGroupMessage.go @@ -21,8 +21,6 @@ func (p *Processors) ProcessGroupMessage(data *dto.WSGroupATMessageData) error { // 获取s s := client.GetGlobalS() - idmap.WriteConfigv2(data.ChannelID, "guild_id", data.GuildID) - // 转换at messageText := handlers.RevertTransformedText(data) diff --git a/Processor/ProcessGuildATMessage.go b/Processor/ProcessGuildATMessage.go index 70ffb2b7..5ff0a5bf 100644 --- a/Processor/ProcessGuildATMessage.go +++ b/Processor/ProcessGuildATMessage.go @@ -105,20 +105,20 @@ func (p *Processors) ProcessGuildATMessage(data *dto.WSATMessageData) error { //将频道转化为一个群 //获取s s := client.GetGlobalS() - //将channelid写入ini,可取出guild_id todo 比ini更好的储存方式 - idmap.WriteConfigv2(data.ChannelID, "guild_id", data.GuildID) + //将channelid写入ini,可取出guild_id + ChannelID64, err := idmap.StoreIDv2(data.ChannelID) + if err != nil { + log.Printf("Error storing ID: %v", err) + return nil + } + //转成int再互转 + idmap.WriteConfigv2(fmt.Sprint(ChannelID64), "guild_id", data.GuildID) //转换at和图片 messageText := handlers.RevertTransformedText(data) //转换appid AppIDString := strconv.FormatUint(p.Settings.AppID, 10) //构造echo echostr := AppIDString + "_" + strconv.FormatInt(s, 10) - //把频道号作为群号 - channelIDInt, err := strconv.Atoi(data.ChannelID) - if err != nil { - // handle error, perhaps return it - return fmt.Errorf("failed to convert ChannelID to int: %v", err) - } //映射str的userid到int userid64, err := idmap.StoreIDv2(data.Author.ID) if err != nil { @@ -142,7 +142,7 @@ func (p *Processors) ProcessGuildATMessage(data *dto.WSATMessageData) error { RawMessage: messageText, Message: segmentedMessages, MessageID: messageID, - GroupID: int64(channelIDInt), + GroupID: ChannelID64, MessageType: "group", PostType: "message", SelfID: int64(p.Settings.AppID), @@ -178,8 +178,8 @@ func (p *Processors) ProcessGuildATMessage(data *dto.WSATMessageData) error { echo.AddMsgID(AppIDString, s, data.ID) echo.AddMsgType(AppIDString, s, "guild") //为不支持双向echo的ob服务端映射 - echo.AddMsgID(AppIDString, int64(channelIDInt), data.ID) - echo.AddMsgType(AppIDString, int64(channelIDInt), "guild") + echo.AddMsgID(AppIDString, ChannelID64, data.ID) + echo.AddMsgType(AppIDString, ChannelID64, "guild") //储存当前群或频道号的类型 idmap.WriteConfigv2(data.ChannelID, "type", "guild") diff --git a/Processor/ProcessGuildNormalMessage.go b/Processor/ProcessGuildNormalMessage.go index 370a0178..a7ffe172 100644 --- a/Processor/ProcessGuildNormalMessage.go +++ b/Processor/ProcessGuildNormalMessage.go @@ -104,20 +104,20 @@ func (p *Processors) ProcessGuildNormalMessage(data *dto.WSMessageData) error { //将频道转化为一个群 //获取s s := client.GetGlobalS() - //将channelid写入ini,可取出guild_id todo 比ini更好的储存方式 - idmap.WriteConfigv2(data.ChannelID, "guild_id", data.GuildID) + //将channelid写入ini,可取出guild_id + ChannelID64, err := idmap.StoreIDv2(data.ChannelID) + if err != nil { + log.Printf("Error storing ID: %v", err) + return nil + } + //转成int再互转 + idmap.WriteConfigv2(fmt.Sprint(ChannelID64), "guild_id", data.GuildID) //转换at messageText := handlers.RevertTransformedText(data) //转换appid AppIDString := strconv.FormatUint(p.Settings.AppID, 10) //构造echo echostr := AppIDString + "_" + strconv.FormatInt(s, 10) - //把频道号作为群号 - channelIDInt, err := strconv.Atoi(data.ChannelID) - if err != nil { - // handle error, perhaps return it - return fmt.Errorf("failed to convert ChannelID to int: %v", err) - } //映射str的userid到int userid64, err := idmap.StoreIDv2(data.Author.ID) if err != nil { @@ -141,7 +141,7 @@ func (p *Processors) ProcessGuildNormalMessage(data *dto.WSMessageData) error { RawMessage: messageText, Message: segmentedMessages, MessageID: messageID, - GroupID: int64(channelIDInt), + GroupID: ChannelID64, MessageType: "group", PostType: "message", SelfID: int64(p.Settings.AppID), @@ -177,8 +177,8 @@ func (p *Processors) ProcessGuildNormalMessage(data *dto.WSMessageData) error { echo.AddMsgID(AppIDString, s, data.ID) echo.AddMsgType(AppIDString, s, "guild") //为不支持双向echo的ob服务端映射 - echo.AddMsgID(AppIDString, int64(channelIDInt), data.ID) - echo.AddMsgType(AppIDString, int64(channelIDInt), "guild") + echo.AddMsgID(AppIDString, ChannelID64, data.ID) + echo.AddMsgType(AppIDString, ChannelID64, "guild") //储存当前群或频道号的类型 idmap.WriteConfigv2(data.ChannelID, "type", "guild") diff --git a/handlers/get_group_info.go b/handlers/get_group_info.go index 86b3d383..0a0e863a 100644 --- a/handlers/get_group_info.go +++ b/handlers/get_group_info.go @@ -3,6 +3,7 @@ package handlers import ( "context" "encoding/json" + "fmt" "log" "github.com/hoshinonyaruko/gensokyo/callapi" @@ -57,8 +58,13 @@ func handleGetGroupInfo(client callapi.Client, api openapi.OpenAPI, apiv2 openap //用GroupID给ChannelID赋值,因为我们是把频道虚拟成了群 ChannelID := params.GroupID + // 使用RetrieveRowByIDv2还原真实的ChannelID + RChannelID, err := idmap.RetrieveRowByIDv2(ChannelID.(string)) + if err != nil { + fmt.Printf("error retrieving real ChannelID: %v", err) + } //读取ini 通过ChannelID取回之前储存的guild_id - value, err := idmap.ReadConfigv2(ChannelID.(string), "guild_id") + value, err := idmap.ReadConfigv2(RChannelID, "guild_id") if err != nil { log.Printf("handleGetGroupInfo:Error reading config: %v\n", err) return @@ -71,16 +77,8 @@ func handleGetGroupInfo(client callapi.Client, api openapi.OpenAPI, apiv2 openap log.Printf("获取频道信息失败: %v", err) return } - //用group_id还原出channelid 这是虚拟成群的私聊信息 - message.Params.ChannelID = message.Params.GroupID.(string) - //读取ini 通过ChannelID取回之前储存的guild_id - GroupId, err := idmap.ReadConfigv2(message.Params.ChannelID, "guild_id") - if err != nil { - log.Printf("Error reading config: %v", err) - return - } - groupInfo := ConvertGuildToGroupInfo(guild, GroupId) + groupInfo := ConvertGuildToGroupInfo(guild, guildID) groupInfoMap := structToMap(groupInfo) // 打印groupInfoMap的内容 diff --git a/handlers/get_group_member_list.go b/handlers/get_group_member_list.go index cdc553ef..c32edf78 100644 --- a/handlers/get_group_member_list.go +++ b/handlers/get_group_member_list.go @@ -52,8 +52,13 @@ func getGroupMemberList(client callapi.Client, api openapi.OpenAPI, apiv2 openap //要把group_id还原成guild_id //用group_id还原出channelid 这是虚拟成群的私聊信息 message.Params.ChannelID = message.Params.GroupID.(string) + // 使用RetrieveRowByIDv2还原真实的ChannelID + RChannelID, err := idmap.RetrieveRowByIDv2(message.Params.ChannelID) + if err != nil { + log.Printf("error retrieving real ChannelID: %v", err) + } //读取ini 通过ChannelID取回之前储存的guild_id - value, err := idmap.ReadConfigv2(message.Params.ChannelID, "guild_id") + value, err := idmap.ReadConfigv2(RChannelID, "guild_id") if err != nil { log.Printf("Error reading config: %v", err) return diff --git a/handlers/send_group_msg.go b/handlers/send_group_msg.go index 2f11c57b..a962794a 100644 --- a/handlers/send_group_msg.go +++ b/handlers/send_group_msg.go @@ -112,20 +112,19 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap case "guild": //用GroupID给ChannelID赋值,因为我们是把频道虚拟成了群 message.Params.ChannelID = message.Params.GroupID.(string) - //读取ini 通过ChannelID取回之前储存的guild_id - // value, err := idmap.ReadConfigv2(message.Params.ChannelID, "guild_id") - // if err != nil { - // log.Printf("Error reading config: %v", err) - // return - // } - //这一句是group_private的逻辑,发频道信息用的是channelid,只有频道private需要guildid才需要这些逻辑 + //这一句是group_private的逻辑,发频道信息用的是channelid //message.Params.GroupID = value handleSendGuildChannelMsg(client, api, apiv2, message) case "guild_private": //用group_id还原出channelid 这是虚拟成群的私聊信息 message.Params.ChannelID = message.Params.GroupID.(string) + // 使用RetrieveRowByIDv2还原真实的ChannelID + RChannelID, err := idmap.RetrieveRowByIDv2(message.Params.ChannelID) + if err != nil { + log.Printf("error retrieving real ChannelID: %v", err) + } //读取ini 通过ChannelID取回之前储存的guild_id - value, err := idmap.ReadConfigv2(message.Params.ChannelID, "guild_id") + value, err := idmap.ReadConfigv2(RChannelID, "guild_id") if err != nil { log.Printf("Error reading config: %v", err) return diff --git a/handlers/send_msg.go b/handlers/send_msg.go index 38716dbb..89dc8b19 100644 --- a/handlers/send_msg.go +++ b/handlers/send_msg.go @@ -117,13 +117,6 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope case "guild": //用GroupID给ChannelID赋值,因为我们是把频道虚拟成了群 message.Params.ChannelID = message.Params.GroupID.(string) - //读取ini 通过ChannelID取回之前储存的guild_id - // value, err := idmap.ReadConfigv2(message.Params.ChannelID, "guild_id") - // if err != nil { - // log.Printf("Error reading config: %v", err) - // return - // } - // message.Params.GroupID = value handleSendGuildChannelMsg(client, api, apiv2, message) case "guild_private": //send_msg比具体的send_xxx少一层,其包含的字段类型在虚拟化场景已经失去作用 @@ -137,8 +130,14 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope // 先尝试将GroupID断言为字符串 if channelID, ok := message.Params.GroupID.(string); ok && channelID != "" { channelIDPtr = &channelID + // 使用RetrieveRowByIDv2还原真实的UserID + RChannelID, err := idmap.RetrieveRowByIDv2(*channelIDPtr) + if err != nil { + log.Printf("error retrieving real ChannelID: %v", err) + return + } // 读取bolt数据库 通过ChannelID取回之前储存的guild_id - if value, err := idmap.ReadConfigv2(channelID, "guild_id"); err == nil && value != "" { + if value, err := idmap.ReadConfigv2(RChannelID, "guild_id"); err == nil && value != "" { GuildidPtr = &value } else { log.Printf("Error reading config: %v", err) diff --git a/handlers/send_private_msg.go b/handlers/send_private_msg.go index de98dda0..b3b0cc80 100644 --- a/handlers/send_private_msg.go +++ b/handlers/send_private_msg.go @@ -251,9 +251,13 @@ func getGuildIDFromMessage(message callapi.ActionMessage) (string, string, error if err != nil { return "", "", fmt.Errorf("error reading channel_id: %v", err) } - + // 使用RetrieveRowByIDv2还原真实的ChannelID + RChannelID, err := idmap.RetrieveRowByIDv2(channelID) + if err != nil { + log.Printf("error retrieving real UserID: %v", err) + } // 使用channelID作为sectionName从数据库中获取guild_id - guildID, err := idmap.ReadConfigv2(channelID, "guild_id") + guildID, err := idmap.ReadConfigv2(RChannelID, "guild_id") if err != nil { return "", "", fmt.Errorf("error reading guild_id: %v", err) } diff --git a/handlers/set_group_ban.go b/handlers/set_group_ban.go index affb142b..93cb0e20 100644 --- a/handlers/set_group_ban.go +++ b/handlers/set_group_ban.go @@ -20,9 +20,13 @@ func setGroupBan(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenA // 从message中获取group_id和UserID groupID := message.Params.GroupID.(string) receivedUserID := message.Params.UserID.(string) - - // 根据group_id读取guild_id - guildID, err := idmap.ReadConfigv2(groupID, "guild_id") + // 使用RetrieveRowByIDv2还原真实的ChannelID + RChannelID, err := idmap.RetrieveRowByIDv2(groupID) + if err != nil { + log.Printf("error retrieving real UserID: %v", err) + } + // 根据RChannelID读取guild_id + guildID, err := idmap.ReadConfigv2(RChannelID, "guild_id") if err != nil { log.Printf("Error reading config for guild_id: %v", err) return diff --git a/handlers/set_group_whole_ban.go b/handlers/set_group_whole_ban.go index 771dae55..bf010ccc 100644 --- a/handlers/set_group_whole_ban.go +++ b/handlers/set_group_whole_ban.go @@ -17,9 +17,13 @@ func init() { func setGroupWholeBan(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { // 从message中获取group_id groupID := message.Params.GroupID.(string) - + // 使用RetrieveRowByIDv2还原真实的ChannelID + RChannelID, err := idmap.RetrieveRowByIDv2(groupID) + if err != nil { + log.Printf("error retrieving real UserID: %v", err) + } // 根据group_id读取guild_id - guildID, err := idmap.ReadConfigv2(groupID, "guild_id") + guildID, err := idmap.ReadConfigv2(RChannelID, "guild_id") if err != nil { log.Printf("Error reading config for guild_id: %v", err) return diff --git a/idmap/service.go b/idmap/service.go index d4f6202f..d07ff6cc 100644 --- a/idmap/service.go +++ b/idmap/service.go @@ -175,11 +175,18 @@ func WriteConfig(sectionName, keyName, value string) error { return db.Update(func(tx *bolt.Tx) error { b, err := tx.CreateBucketIfNotExists([]byte(ConfigBucket)) if err != nil { - return err + log.Printf("Error creating or accessing bucket: %v", err) + return fmt.Errorf("failed to access or create bucket %s: %w", ConfigBucket, err) } key := joinSectionAndKey(sectionName, keyName) - return b.Put(key, []byte(value)) + err = b.Put(key, []byte(value)) + if err != nil { + log.Printf("Error putting data into bucket with key %s: %v", key, err) + return fmt.Errorf("failed to put data into bucket with key %s: %w", key, err) + } + //log.Printf("Data saved successfully with key %s,value %s", key, value) + return nil }) } diff --git a/url/shorturl.go b/url/shorturl.go index 83105a50..119e4ec3 100644 --- a/url/shorturl.go +++ b/url/shorturl.go @@ -296,15 +296,7 @@ func CreateShortURLHandler(c *gin.Context) { // Construct baseUrl serverDir := config.GetServer_dir() - portValue := config.GetPortValue() - protocol := "http" - if portValue == "443" { - protocol = "https" - } - baseUrl := protocol + "://" + serverDir - if portValue != "80" && portValue != "443" && portValue != "" { - baseUrl += ":" + portValue - } + baseUrl := "https://" + serverDir c.JSON(http.StatusOK, gin.H{"shortURL": baseUrl + "/url/" + shortURL}) } @@ -312,16 +304,7 @@ func CreateShortURLHandler(c *gin.Context) { // 短链接baseurl func GetBaseURL() string { serverDir := config.GetServer_dir() - portValue := config.GetPortValue() - protocol := "http" - if portValue == "443" { - protocol = "https" - } - baseUrl := protocol + "://" + serverDir - if portValue != "80" && portValue != "443" && portValue != "" { - baseUrl += ":" + portValue - } - return baseUrl + return "https://" + serverDir } // RedirectFromShortURLHandler From b191cb74f3f805177af6a7e5d46173284431c375 Mon Sep 17 00:00:00 2001 From: cosmo Date: Tue, 31 Oct 2023 22:28:30 +0800 Subject: [PATCH 28/36] bugfix --- Processor/ProcessChannelDirectMessage.go | 15 +++- Processor/ProcessGroupMessage.go | 3 +- Processor/ProcessGuildATMessage.go | 4 +- Processor/ProcessGuildNormalMessage.go | 4 +- gensokyo.db | Bin 32768 -> 32768 bytes handlers/get_group_info.go | 8 +- handlers/get_group_member_list.go | 7 +- handlers/send_group_msg.go | 30 +++++-- handlers/send_guild_channel_msg.go | 21 ++++- handlers/send_msg.go | 101 +++-------------------- handlers/send_private_msg.go | 24 ++++-- handlers/set_group_ban.go | 7 +- handlers/set_group_whole_ban.go | 7 +- 13 files changed, 90 insertions(+), 141 deletions(-) diff --git a/Processor/ProcessChannelDirectMessage.go b/Processor/ProcessChannelDirectMessage.go index 57f545ac..e4fa4c14 100644 --- a/Processor/ProcessChannelDirectMessage.go +++ b/Processor/ProcessChannelDirectMessage.go @@ -45,8 +45,15 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) //将真实id写入数据库,可取出ChannelID idmap.WriteConfigv2(data.Author.ID, "channel_id", data.ChannelID) //将channelid写入数据库,可取出guild_id + ChannelID64, err := idmap.StoreIDv2(data.ChannelID) + if err != nil { + log.Printf("Error storing ID: %v", err) + return nil + } + //转成int再互转 + idmap.WriteConfigv2(fmt.Sprint(ChannelID64), "guild_id", data.GuildID) + //直接储存 适用于私信场景私聊 idmap.WriteConfigv2(data.ChannelID, "guild_id", data.GuildID) - //收到私聊信息调用的具体还原步骤 //1,idmap还原真实userid, //2,通过idmap获取channelid, @@ -168,6 +175,7 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) echo.AddMsgType(AppIDString, userid64, "guild_private") //储存当前群或频道号的类型 idmap.WriteConfigv2(data.ChannelID, "type", "guild_private") + //todo 完善频道类型信息转换 //调试 PrintStructWithFieldNames(onebotMsg) @@ -184,7 +192,7 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) log.Printf("Error storing ID: %v", err) return nil } - //转成int再互转 + //转成int再互转 适用于群场景私聊 idmap.WriteConfigv2(fmt.Sprint(ChannelID64), "guild_id", data.GuildID) //转换at messageText := handlers.RevertTransformedText(data) @@ -254,7 +262,8 @@ func (p *Processors) ProcessChannelDirectMessage(data *dto.WSDirectMessageData) echo.AddMsgID(AppIDString, userid64, data.ID) echo.AddMsgType(AppIDString, userid64, "guild_private") //储存当前群或频道号的类型 - idmap.WriteConfigv2(data.ChannelID, "type", "guild_private") + idmap.WriteConfigv2(fmt.Sprint(ChannelID64), "type", "guild_private") + echo.AddMsgType(AppIDString, ChannelID64, "guild_private") //调试 PrintStructWithFieldNames(groupMsg) diff --git a/Processor/ProcessGroupMessage.go b/Processor/ProcessGroupMessage.go index b8a2a2ea..670c67e0 100644 --- a/Processor/ProcessGroupMessage.go +++ b/Processor/ProcessGroupMessage.go @@ -98,7 +98,8 @@ func (p *Processors) ProcessGroupMessage(data *dto.WSGroupATMessageData) error { echo.AddMsgID(AppIDString, GroupID64, data.ID) echo.AddMsgType(AppIDString, GroupID64, "group") //储存当前群或频道号的类型 - idmap.WriteConfigv2(data.GroupID, "type", "group") + idmap.WriteConfigv2(fmt.Sprint(GroupID64), "type", "group") + echo.AddMsgType(AppIDString, GroupID64, "guild_private") // 调试 PrintStructWithFieldNames(groupMsg) diff --git a/Processor/ProcessGuildATMessage.go b/Processor/ProcessGuildATMessage.go index 5ff0a5bf..c6e54ca1 100644 --- a/Processor/ProcessGuildATMessage.go +++ b/Processor/ProcessGuildATMessage.go @@ -91,6 +91,7 @@ func (p *Processors) ProcessGuildATMessage(data *dto.WSATMessageData) error { echo.AddMsgType(AppIDString, userid64, "guild") //储存当前群或频道号的类型 idmap.WriteConfigv2(data.ChannelID, "type", "guild") + //todo 完善频道转换 //调试 PrintStructWithFieldNames(onebotMsg) @@ -181,7 +182,8 @@ func (p *Processors) ProcessGuildATMessage(data *dto.WSATMessageData) error { echo.AddMsgID(AppIDString, ChannelID64, data.ID) echo.AddMsgType(AppIDString, ChannelID64, "guild") //储存当前群或频道号的类型 - idmap.WriteConfigv2(data.ChannelID, "type", "guild") + idmap.WriteConfigv2(fmt.Sprint(ChannelID64), "type", "guild") + echo.AddMsgType(AppIDString, ChannelID64, "guild") //调试 PrintStructWithFieldNames(groupMsg) diff --git a/Processor/ProcessGuildNormalMessage.go b/Processor/ProcessGuildNormalMessage.go index a7ffe172..3f51f0b9 100644 --- a/Processor/ProcessGuildNormalMessage.go +++ b/Processor/ProcessGuildNormalMessage.go @@ -90,6 +90,7 @@ func (p *Processors) ProcessGuildNormalMessage(data *dto.WSMessageData) error { echo.AddMsgType(AppIDString, userid64, "guild") //储存当前群或频道号的类型 idmap.WriteConfigv2(data.ChannelID, "type", "guild") + //todo 完善频道ob信息 //调试 PrintStructWithFieldNames(onebotMsg) @@ -180,7 +181,8 @@ func (p *Processors) ProcessGuildNormalMessage(data *dto.WSMessageData) error { echo.AddMsgID(AppIDString, ChannelID64, data.ID) echo.AddMsgType(AppIDString, ChannelID64, "guild") //储存当前群或频道号的类型 - idmap.WriteConfigv2(data.ChannelID, "type", "guild") + idmap.WriteConfigv2(fmt.Sprint(ChannelID64), "type", "guild") + echo.AddMsgType(AppIDString, ChannelID64, "guild") //调试 PrintStructWithFieldNames(groupMsg) diff --git a/gensokyo.db b/gensokyo.db index 5ab9bd33a79ac7e2f391150744b1351ca707bf7a..dce564ec451cfde36e58e9701982a8e9da8570f6 100644 GIT binary patch delta 466 zcmZo@U}|V!nxMeQJo%%&xC9#m1js?@5;coGMl2N@HY+M@;GZO*z{oWDqd!8KJXG0L zg$XsMw9?(d$|f5Ka7^ZK5MjJMS=K?Vo*Al!fx!UC0$HF874d}fwV?b=C|?Ii8>Jds z7$#?wloS+O>Fbx5m+MuQ7M7;!CFkerXXl!lCza@DmMv;IwOP?&1OFreurhgsGES&6rKCOc zSGE{lf+$nqn9LC%uvx<41^*-ij?EknKlmpa0L2tU7!@YVDyVH%a@fm1DL`PdfCC33 N^Jc|>`}z|TH~?3IBwYXi diff --git a/handlers/get_group_info.go b/handlers/get_group_info.go index 0a0e863a..5021390c 100644 --- a/handlers/get_group_info.go +++ b/handlers/get_group_info.go @@ -3,7 +3,6 @@ package handlers import ( "context" "encoding/json" - "fmt" "log" "github.com/hoshinonyaruko/gensokyo/callapi" @@ -58,13 +57,8 @@ func handleGetGroupInfo(client callapi.Client, api openapi.OpenAPI, apiv2 openap //用GroupID给ChannelID赋值,因为我们是把频道虚拟成了群 ChannelID := params.GroupID - // 使用RetrieveRowByIDv2还原真实的ChannelID - RChannelID, err := idmap.RetrieveRowByIDv2(ChannelID.(string)) - if err != nil { - fmt.Printf("error retrieving real ChannelID: %v", err) - } //读取ini 通过ChannelID取回之前储存的guild_id - value, err := idmap.ReadConfigv2(RChannelID, "guild_id") + value, err := idmap.ReadConfigv2(ChannelID.(string), "guild_id") if err != nil { log.Printf("handleGetGroupInfo:Error reading config: %v\n", err) return diff --git a/handlers/get_group_member_list.go b/handlers/get_group_member_list.go index c32edf78..cdc553ef 100644 --- a/handlers/get_group_member_list.go +++ b/handlers/get_group_member_list.go @@ -52,13 +52,8 @@ func getGroupMemberList(client callapi.Client, api openapi.OpenAPI, apiv2 openap //要把group_id还原成guild_id //用group_id还原出channelid 这是虚拟成群的私聊信息 message.Params.ChannelID = message.Params.GroupID.(string) - // 使用RetrieveRowByIDv2还原真实的ChannelID - RChannelID, err := idmap.RetrieveRowByIDv2(message.Params.ChannelID) - if err != nil { - log.Printf("error retrieving real ChannelID: %v", err) - } //读取ini 通过ChannelID取回之前储存的guild_id - value, err := idmap.ReadConfigv2(RChannelID, "guild_id") + value, err := idmap.ReadConfigv2(message.Params.ChannelID, "guild_id") if err != nil { log.Printf("Error reading config: %v", err) return diff --git a/handlers/send_group_msg.go b/handlers/send_group_msg.go index a962794a..f865639b 100644 --- a/handlers/send_group_msg.go +++ b/handlers/send_group_msg.go @@ -112,19 +112,20 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap case "guild": //用GroupID给ChannelID赋值,因为我们是把频道虚拟成了群 message.Params.ChannelID = message.Params.GroupID.(string) + // 使用RetrieveRowByIDv2还原真实的ChannelID + RChannelID, err := idmap.RetrieveRowByIDv2(message.Params.ChannelID) + if err != nil { + log.Printf("error retrieving real UserID: %v", err) + } + message.Params.ChannelID = RChannelID //这一句是group_private的逻辑,发频道信息用的是channelid //message.Params.GroupID = value handleSendGuildChannelMsg(client, api, apiv2, message) case "guild_private": //用group_id还原出channelid 这是虚拟成群的私聊信息 message.Params.ChannelID = message.Params.GroupID.(string) - // 使用RetrieveRowByIDv2还原真实的ChannelID - RChannelID, err := idmap.RetrieveRowByIDv2(message.Params.ChannelID) - if err != nil { - log.Printf("error retrieving real ChannelID: %v", err) - } //读取ini 通过ChannelID取回之前储存的guild_id - value, err := idmap.ReadConfigv2(RChannelID, "guild_id") + value, err := idmap.ReadConfigv2(message.Params.ChannelID, "guild_id") if err != nil { log.Printf("Error reading config: %v", err) return @@ -139,14 +140,20 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap } } +// 不支持base64 func generateGroupMessage(id string, foundItems map[string][]string, messageText string) interface{} { if imageURLs, ok := foundItems["local_image"]; ok && len(imageURLs) > 0 { // 从本地路径读取图片 imageData, err := os.ReadFile(imageURLs[0]) if err != nil { - // 读入文件,如果是本地图,应用端和gensokyo需要在一台电脑 + // 读入文件失败 log.Printf("Error reading the image from path %s: %v", imageURLs[0], err) - return nil + // 返回文本信息,提示图片文件不存在 + return &dto.MessageToCreate{ + Content: "错误: 图片文件不存在", + MsgID: id, + MsgType: 0, // 默认文本类型 + } } // base64编码 @@ -156,7 +163,12 @@ func generateGroupMessage(id string, foundItems map[string][]string, messageText imageURL, err := images.UploadBase64ImageToServer(base64Encoded) if err != nil { log.Printf("Error uploading base64 encoded image: %v", err) - return nil + // 如果上传失败,也返回文本信息,提示上传失败 + return &dto.MessageToCreate{ + Content: "错误: 上传图片失败", + MsgID: id, + MsgType: 0, // 默认文本类型 + } } // 创建RichMediaMessage并返回,当作URL图片处理 diff --git a/handlers/send_guild_channel_msg.go b/handlers/send_guild_channel_msg.go index 5b6f46ab..0a9d5506 100644 --- a/handlers/send_guild_channel_msg.go +++ b/handlers/send_guild_channel_msg.go @@ -9,6 +9,7 @@ import ( "github.com/hoshinonyaruko/gensokyo/callapi" "github.com/hoshinonyaruko/gensokyo/config" + "github.com/hoshinonyaruko/gensokyo/idmap" "github.com/hoshinonyaruko/gensokyo/echo" @@ -50,6 +51,7 @@ func handleSendGuildChannelMsg(client callapi.Client, api openapi.OpenAPI, apiv2 messageText, foundItems := parseMessageContent(params) channelID := params.ChannelID + log.Printf("发送文本信息失败: %v,%v", channelID, channelID) // 使用 echo 获取消息ID var messageID string if echoStr, ok := message.Echo.(string); ok { @@ -63,8 +65,8 @@ func handleSendGuildChannelMsg(client callapi.Client, api openapi.OpenAPI, apiv2 } log.Println("频道发信息messageText:", messageText) log.Println("foundItems:", foundItems) - var err error // 优先发送文本信息 + var err error if messageText != "" { textMsg, _ := generateReplyMessage(messageID, nil, messageText) if _, err = api.PostMessage(context.TODO(), channelID, textMsg); err != nil { @@ -112,13 +114,18 @@ func handleSendGuildChannelMsg(client callapi.Client, api openapi.OpenAPI, apiv2 params := message.Params channelID := params.ChannelID guildID := params.GuildID - handleSendGuildChannelPrivateMsg(client, api, apiv2, message, &guildID, &channelID) + // 使用RetrieveRowByIDv2还原真实的ChannelID + RChannelID, err := idmap.RetrieveRowByIDv2(channelID) + if err != nil { + log.Printf("error retrieving real UserID: %v", err) + } + handleSendGuildChannelPrivateMsg(client, api, apiv2, message, &guildID, &RChannelID) default: log.Printf("2Unknown message type: %s", msgType) } } -// 组合发频道信息需要的MessageToCreate +// 组合发频道信息需要的MessageToCreate 支持base64 func generateReplyMessage(id string, foundItems map[string][]string, messageText string) (*dto.MessageToCreate, bool) { var reply dto.MessageToCreate var isBase64 bool @@ -129,7 +136,13 @@ func generateReplyMessage(id string, foundItems map[string][]string, messageText if err != nil { // 读入文件,如果是本地图,应用端和gensokyo需要在一台电脑 log.Printf("Error reading the image from path %s: %v", imageURLs[0], err) - return nil, false + // 发文本信息,提示图片文件不存在 + reply = dto.MessageToCreate{ + Content: "错误: 图片文件不存在", + MsgID: id, + MsgType: 0, // 默认文本类型 + } + return &reply, false } //base64编码 diff --git a/handlers/send_msg.go b/handlers/send_msg.go index 89dc8b19..c4db671f 100644 --- a/handlers/send_msg.go +++ b/handlers/send_msg.go @@ -2,10 +2,8 @@ package handlers import ( "context" - "encoding/base64" "fmt" "log" - "os" "strconv" "time" @@ -13,7 +11,6 @@ import ( "github.com/hoshinonyaruko/gensokyo/config" "github.com/hoshinonyaruko/gensokyo/echo" "github.com/hoshinonyaruko/gensokyo/idmap" - "github.com/hoshinonyaruko/gensokyo/images" "github.com/tencent-connect/botgo/dto" "github.com/tencent-connect/botgo/openapi" ) @@ -74,7 +71,7 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope // 优先发送文本信息 if messageText != "" { - groupReply := generateMessage(messageID, nil, messageText) + groupReply := generateGroupMessage(messageID, nil, messageText) // 进行类型断言 groupMessage, ok := groupReply.(*dto.MessageToCreate) @@ -97,7 +94,7 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope var singleItem = make(map[string][]string) singleItem[key] = urls - groupReply := generateMessage(messageID, singleItem, "") + groupReply := generateGroupMessage(messageID, singleItem, "") // 进行类型断言 richMediaMessage, ok := groupReply.(*dto.RichMediaMessage) @@ -117,6 +114,12 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope case "guild": //用GroupID给ChannelID赋值,因为我们是把频道虚拟成了群 message.Params.ChannelID = message.Params.GroupID.(string) + // 使用RetrieveRowByIDv2还原真实的ChannelID + RChannelID, err := idmap.RetrieveRowByIDv2(message.Params.ChannelID) + if err != nil { + log.Printf("error retrieving real UserID: %v", err) + } + message.Params.ChannelID = RChannelID handleSendGuildChannelMsg(client, api, apiv2, message) case "guild_private": //send_msg比具体的send_xxx少一层,其包含的字段类型在虚拟化场景已经失去作用 @@ -130,14 +133,8 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope // 先尝试将GroupID断言为字符串 if channelID, ok := message.Params.GroupID.(string); ok && channelID != "" { channelIDPtr = &channelID - // 使用RetrieveRowByIDv2还原真实的UserID - RChannelID, err := idmap.RetrieveRowByIDv2(*channelIDPtr) - if err != nil { - log.Printf("error retrieving real ChannelID: %v", err) - return - } // 读取bolt数据库 通过ChannelID取回之前储存的guild_id - if value, err := idmap.ReadConfigv2(RChannelID, "guild_id"); err == nil && value != "" { + if value, err := idmap.ReadConfigv2(*channelIDPtr, "guild_id"); err == nil && value != "" { GuildidPtr = &value } else { log.Printf("Error reading config: %v", err) @@ -178,7 +175,7 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope // 优先发送文本信息 if messageText != "" { - groupReply := generateMessage(messageID, nil, messageText) + groupReply := generateGroupMessage(messageID, nil, messageText) // 进行类型断言 groupMessage, ok := groupReply.(*dto.MessageToCreate) @@ -201,7 +198,7 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope var singleItem = make(map[string][]string) singleItem[key] = urls - groupReply := generateMessage(messageID, singleItem, "") + groupReply := generateGroupMessage(messageID, singleItem, "") // 进行类型断言 richMediaMessage, ok := groupReply.(*dto.RichMediaMessage) @@ -221,82 +218,6 @@ func handleSendMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.Ope } } -func generateMessage(id string, foundItems map[string][]string, messageText string) interface{} { - if imageURLs, ok := foundItems["local_image"]; ok && len(imageURLs) > 0 { - // 从本地路径读取图片 - imageData, err := os.ReadFile(imageURLs[0]) - if err != nil { - // 读入文件,如果是本地图,应用端和gensokyo需要在一台电脑 - log.Printf("Error reading the image from path %s: %v", imageURLs[0], err) - return nil - } - - // base64编码 - base64Encoded := base64.StdEncoding.EncodeToString(imageData) - - // 上传base64编码的图片并获取其URL - imageURL, err := images.UploadBase64ImageToServer(base64Encoded) - if err != nil { - log.Printf("Error uploading base64 encoded image: %v", err) - return nil - } - - // 创建RichMediaMessage并返回,当作URL图片处理 - return &dto.RichMediaMessage{ - EventID: id, - FileType: 1, // 1代表图片 - URL: imageURL, - Content: "", // 这个字段文档没有了 - SrvSendMsg: true, - } - } else if imageURLs, ok := foundItems["url_image"]; ok && len(imageURLs) > 0 { - // 发链接图片 - return &dto.RichMediaMessage{ - EventID: id, - FileType: 1, // 1代表图片 - URL: "http://" + imageURLs[0], - Content: "", // 这个字段文档没有了 - SrvSendMsg: true, - } - } else if base64_image, ok := foundItems["base64_image"]; ok && len(base64_image) > 0 { - // todo 适配base64图片 - //因为QQ群没有 form方式上传,所以在gensokyo内置了图床,需公网,或以lotus方式连接位于公网的gensokyo - //要正确的开放对应的端口和设置正确的ip地址在config,这对于一般用户是有一些难度的 - if base64Image, ok := foundItems["base64_image"]; ok && len(base64Image) > 0 { - // 解码base64图片数据 - fileImageData, err := base64.StdEncoding.DecodeString(base64Image[0]) - if err != nil { - log.Printf("failed to decode base64 image: %v", err) - return nil - } - // 将解码的图片数据转换回base64格式并上传 - imageURL, err := images.UploadBase64ImageToServer(base64.StdEncoding.EncodeToString(fileImageData)) - if err != nil { - log.Printf("failed to upload base64 image: %v", err) - return nil - } - // 创建RichMediaMessage并返回 - return &dto.RichMediaMessage{ - EventID: id, - FileType: 1, // 1代表图片 - URL: imageURL, - Content: "", // 这个字段文档没有了 - SrvSendMsg: true, - } - } - } else if voiceURLs, ok := foundItems["base64_record"]; ok && len(voiceURLs) > 0 { - // 目前不支持发语音 todo 适配base64 slik - } else { - // 返回文本信息 - return &dto.MessageToCreate{ - Content: messageText, - MsgID: id, - MsgType: 0, // 默认文本类型 - } - } - return nil -} - // 通过user_id获取messageID func GetMessageIDByUseridOrGroupid(appID string, userID interface{}) string { // 从appID和userID生成key diff --git a/handlers/send_private_msg.go b/handlers/send_private_msg.go index b3b0cc80..e6fb7605 100644 --- a/handlers/send_private_msg.go +++ b/handlers/send_private_msg.go @@ -28,6 +28,21 @@ func handleSendPrivateMsg(client callapi.Client, api openapi.OpenAPI, apiv2 open msgType = echo.GetMsgTypeByKey(echoStr) } + //如果获取不到 就用group_id获取信息类型 + if msgType == "" { + appID := config.GetAppIDStr() + groupID := message.Params.GroupID + fmt.Printf("appID: %s, GroupID: %v\n", appID, groupID) + + msgType = GetMessageTypeByGroupid(appID, groupID) + fmt.Printf("msgType: %s\n", msgType) + } + + //如果获取不到 就用user_id获取信息类型 + if msgType == "" { + msgType = GetMessageTypeByUserid(config.GetAppIDStr(), message.Params.UserID) + } + switch msgType { case "group_private": //私聊信息 @@ -251,13 +266,8 @@ func getGuildIDFromMessage(message callapi.ActionMessage) (string, string, error if err != nil { return "", "", fmt.Errorf("error reading channel_id: %v", err) } - // 使用RetrieveRowByIDv2还原真实的ChannelID - RChannelID, err := idmap.RetrieveRowByIDv2(channelID) - if err != nil { - log.Printf("error retrieving real UserID: %v", err) - } - // 使用channelID作为sectionName从数据库中获取guild_id - guildID, err := idmap.ReadConfigv2(RChannelID, "guild_id") + //使用channelID作为sectionName从数据库中获取guild_id + guildID, err := idmap.ReadConfigv2(channelID, "guild_id") if err != nil { return "", "", fmt.Errorf("error reading guild_id: %v", err) } diff --git a/handlers/set_group_ban.go b/handlers/set_group_ban.go index 93cb0e20..226278b5 100644 --- a/handlers/set_group_ban.go +++ b/handlers/set_group_ban.go @@ -20,13 +20,8 @@ func setGroupBan(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenA // 从message中获取group_id和UserID groupID := message.Params.GroupID.(string) receivedUserID := message.Params.UserID.(string) - // 使用RetrieveRowByIDv2还原真实的ChannelID - RChannelID, err := idmap.RetrieveRowByIDv2(groupID) - if err != nil { - log.Printf("error retrieving real UserID: %v", err) - } // 根据RChannelID读取guild_id - guildID, err := idmap.ReadConfigv2(RChannelID, "guild_id") + guildID, err := idmap.ReadConfigv2(groupID, "guild_id") if err != nil { log.Printf("Error reading config for guild_id: %v", err) return diff --git a/handlers/set_group_whole_ban.go b/handlers/set_group_whole_ban.go index bf010ccc..d2890125 100644 --- a/handlers/set_group_whole_ban.go +++ b/handlers/set_group_whole_ban.go @@ -17,13 +17,8 @@ func init() { func setGroupWholeBan(client callapi.Client, api openapi.OpenAPI, apiv2 openapi.OpenAPI, message callapi.ActionMessage) { // 从message中获取group_id groupID := message.Params.GroupID.(string) - // 使用RetrieveRowByIDv2还原真实的ChannelID - RChannelID, err := idmap.RetrieveRowByIDv2(groupID) - if err != nil { - log.Printf("error retrieving real UserID: %v", err) - } // 根据group_id读取guild_id - guildID, err := idmap.ReadConfigv2(RChannelID, "guild_id") + guildID, err := idmap.ReadConfigv2(groupID, "guild_id") if err != nil { log.Printf("Error reading config for guild_id: %v", err) return From 8fec03f456b544c34ee0947ad15f8e62bfbe1be3 Mon Sep 17 00:00:00 2001 From: cosmo Date: Tue, 31 Oct 2023 22:35:35 +0800 Subject: [PATCH 29/36] fix --- gensokyo.db | Bin 32768 -> 32768 bytes handlers/send_msg.go | 6 ------ handlers/set_group_ban.go | 5 ++--- handlers/set_group_whole_ban.go | 7 +++---- 4 files changed, 5 insertions(+), 13 deletions(-) diff --git a/gensokyo.db b/gensokyo.db index dce564ec451cfde36e58e9701982a8e9da8570f6..602ebfc1072d736e7341368bc897bd08f9801218 100644 GIT binary patch delta 67 zcmZo@U}|V!Vq}=iD4;*dfJ1_f0Rj}DbdTlz@^=S5Fm6_K*ucL@fJ1>(fPo1t$Ff<_ K;XVH%2L}Ms3l5tA delta 105 zcmZo@U}|V!nxMeQJo%%&xC9#m1js?@5;coGMl2N@HY*xz;NK*`p)i?4L4 Date: Tue, 31 Oct 2023 22:36:51 +0800 Subject: [PATCH 30/36] fix --- Processor/ProcessGroupMessage.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Processor/ProcessGroupMessage.go b/Processor/ProcessGroupMessage.go index 670c67e0..26f9c1d8 100644 --- a/Processor/ProcessGroupMessage.go +++ b/Processor/ProcessGroupMessage.go @@ -99,7 +99,7 @@ func (p *Processors) ProcessGroupMessage(data *dto.WSGroupATMessageData) error { echo.AddMsgType(AppIDString, GroupID64, "group") //储存当前群或频道号的类型 idmap.WriteConfigv2(fmt.Sprint(GroupID64), "type", "group") - echo.AddMsgType(AppIDString, GroupID64, "guild_private") + echo.AddMsgType(AppIDString, GroupID64, "group") // 调试 PrintStructWithFieldNames(groupMsg) From 463a182f5f9641a39f35fbf3b8d26538066e7e2a Mon Sep 17 00:00:00 2001 From: cosmo Date: Tue, 31 Oct 2023 22:40:27 +0800 Subject: [PATCH 31/36] fix --- .gitignore | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 6eb03ec0..0dbd90b0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,8 @@ # botgo specific config.yml -idmap.db -idmap.db.lock -idmap.ini +*.db +*.db.lock +*.ini # Go specific *.exe From e9187a1999409b218efc1bcd624980c812def12c Mon Sep 17 00:00:00 2001 From: cosmo Date: Wed, 1 Nov 2023 09:30:33 +0800 Subject: [PATCH 32/36] bug fix --- gensokyo.db | Bin 32768 -> 32768 bytes handlers/send_guild_channel_msg.go | 2 +- handlers/send_msg.go | 8 ++++++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/gensokyo.db b/gensokyo.db index 602ebfc1072d736e7341368bc897bd08f9801218..51b80e9d8859c3be23d1d4d66b1dc2e397682ef5 100644 GIT binary patch delta 79 zcmZo@U}|V!n&2Ry#sC3cOBs^x82vuHSD9u+kt!2)x`_sT` SHYo@wOcn^>*ev1j!X5x1I~6qm delta 77 zcmZo@U}|V!n&2RyzyJX~miNow9r(bwS Date: Wed, 1 Nov 2023 13:26:00 +0800 Subject: [PATCH 33/36] fix --- config_template.go | 1 - dist/css/152.dee3905a.css | 1 + dist/css/265.dee3905a.css | 1 + dist/css/348.b7f28e0f.css | 1 + dist/css/532.fc947aa7.css | 1 + dist/css/app.3ba06184.css | 6 +++ ...worker.afbd84bf87ff32f64c63d43e1a5dde9a.js | 1 + dist/favicon.ico | Bin 0 -> 64483 bytes .../KFOkCnqEu92Fr1MmgVxIIzQ.68bb21d0.woff | Bin 0 -> 20436 bytes .../KFOlCnqEu92Fr1MmEU9fBBc-.48af7707.woff | Bin 0 -> 20544 bytes .../KFOlCnqEu92Fr1MmSU5fBBc-.c2f7ab22.woff | Bin 0 -> 20416 bytes .../KFOlCnqEu92Fr1MmWUlfBBc-.77ecb942.woff | Bin 0 -> 20408 bytes .../KFOlCnqEu92Fr1MmYUtfBBc-.f5677eb2.woff | Bin 0 -> 20424 bytes dist/fonts/KFOmCnqEu92Fr1Mu4mxM.f1e2a767.woff | Bin 0 -> 20344 bytes dist/fonts/codicon.4a477f66.ttf | Bin 0 -> 73464 bytes ...flUhRq6tzZclQEJ-Vdg-IuiaDsNa.4d73cb90.woff | Bin 0 -> 164912 bytes ...tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.c5371cfb.woff2 | Bin 0 -> 128616 bytes ...ono-cyrillic-ext-400-normal.13c026e0.woff2 | Bin 0 -> 13016 bytes ...mono-cyrillic-ext-400-normal.9a2551a4.woff | Bin 0 -> 16876 bytes ...roboto-mono-latin-400-normal.b889d0d8.woff | Bin 0 -> 15232 bytes ...oboto-mono-latin-400-normal.d3026ee2.woff2 | Bin 0 -> 12312 bytes ...to-mono-latin-ext-400-normal.ecd99f6c.woff | Bin 0 -> 11080 bytes dist/icons/favicon-128x128.png | Bin 0 -> 12324 bytes dist/icons/favicon-16x16.png | Bin 0 -> 859 bytes dist/icons/favicon-32x32.png | Bin 0 -> 2039 bytes dist/icons/favicon-96x96.png | Bin 0 -> 9643 bytes dist/index.html | 1 + dist/js/0.c5676287.js | 1 + dist/js/101.7ab3ac19.js | 1 + dist/js/152.4509fa0b.js | 1 + dist/js/19.db43c757.js | 8 ++++ dist/js/238.71293531.js | 1 + dist/js/265.da783e80.js | 1 + dist/js/291.7e5d13e6.js | 1 + dist/js/296.310ff438.js | 3 ++ dist/js/301.6513918c.js | 14 +++++++ dist/js/340.f1b1a65d.js | 1 + dist/js/348.1bb4b8a1.js | 1 + dist/js/361.44b62bc2.js | 7 ++++ dist/js/383.52953c64.js | 1 + dist/js/41.2238d68d.js | 1 + dist/js/411.61a0af36.js | 7 ++++ dist/js/480.29497b46.js | 1 + dist/js/482.01591f77.js | 1 + dist/js/526.79b94dc0.js | 1 + dist/js/532.93be279c.js | 1 + dist/js/610.1cf4540c.js | 1 + dist/js/613.723347ee.js | 1 + dist/js/669.0ac07f76.js | 1 + dist/js/68.c24736b7.js | 1 + dist/js/686.7fb0740f.js | 1 + dist/js/688.d8e61f49.js | 1 + dist/js/713.a8dafbcf.js | 1 + dist/js/79.ccad89c8.js | 1 + dist/js/853.0818f2d8.js | 7 ++++ dist/js/887.0c12e807.js | 1 + dist/js/899.d926aa7a.js | 1 + dist/js/957.faa3bf0b.js | 5 +++ dist/js/964.9b10c5b9.js | 1 + dist/js/972.0bd9bc97.js | 1 + dist/js/app.5d1bf9ee.js | 1 + ...worker.d948a982e2f16fb89f59c7b12029d64a.js | 8 ++++ dist/report.html | 39 ++++++++++++++++++ handlers/send_group_msg.go | 15 ++++--- handlers/send_guild_channel_msg.go | 2 +- handlers/send_msg.go | 15 +++---- handlers/send_private_msg.go | 4 +- idmap/service.go | 37 ++++++++++++++--- images/upload_api.go | 18 ++++++-- main.go | 28 +++++++++++-- server/uploadpic.go | 9 +++- url/shorturl.go | 22 +++++++--- webui/api.go | 11 +++++ 73 files changed, 260 insertions(+), 39 deletions(-) create mode 100644 dist/css/152.dee3905a.css create mode 100644 dist/css/265.dee3905a.css create mode 100644 dist/css/348.b7f28e0f.css create mode 100644 dist/css/532.fc947aa7.css create mode 100644 dist/css/app.3ba06184.css create mode 100644 dist/editor.worker.afbd84bf87ff32f64c63d43e1a5dde9a.js create mode 100644 dist/favicon.ico create mode 100644 dist/fonts/KFOkCnqEu92Fr1MmgVxIIzQ.68bb21d0.woff create mode 100644 dist/fonts/KFOlCnqEu92Fr1MmEU9fBBc-.48af7707.woff create mode 100644 dist/fonts/KFOlCnqEu92Fr1MmSU5fBBc-.c2f7ab22.woff create mode 100644 dist/fonts/KFOlCnqEu92Fr1MmWUlfBBc-.77ecb942.woff create mode 100644 dist/fonts/KFOlCnqEu92Fr1MmYUtfBBc-.f5677eb2.woff create mode 100644 dist/fonts/KFOmCnqEu92Fr1Mu4mxM.f1e2a767.woff create mode 100644 dist/fonts/codicon.4a477f66.ttf create mode 100644 dist/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.4d73cb90.woff create mode 100644 dist/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.c5371cfb.woff2 create mode 100644 dist/fonts/roboto-mono-cyrillic-ext-400-normal.13c026e0.woff2 create mode 100644 dist/fonts/roboto-mono-cyrillic-ext-400-normal.9a2551a4.woff create mode 100644 dist/fonts/roboto-mono-latin-400-normal.b889d0d8.woff create mode 100644 dist/fonts/roboto-mono-latin-400-normal.d3026ee2.woff2 create mode 100644 dist/fonts/roboto-mono-latin-ext-400-normal.ecd99f6c.woff create mode 100644 dist/icons/favicon-128x128.png create mode 100644 dist/icons/favicon-16x16.png create mode 100644 dist/icons/favicon-32x32.png create mode 100644 dist/icons/favicon-96x96.png create mode 100644 dist/index.html create mode 100644 dist/js/0.c5676287.js create mode 100644 dist/js/101.7ab3ac19.js create mode 100644 dist/js/152.4509fa0b.js create mode 100644 dist/js/19.db43c757.js create mode 100644 dist/js/238.71293531.js create mode 100644 dist/js/265.da783e80.js create mode 100644 dist/js/291.7e5d13e6.js create mode 100644 dist/js/296.310ff438.js create mode 100644 dist/js/301.6513918c.js create mode 100644 dist/js/340.f1b1a65d.js create mode 100644 dist/js/348.1bb4b8a1.js create mode 100644 dist/js/361.44b62bc2.js create mode 100644 dist/js/383.52953c64.js create mode 100644 dist/js/41.2238d68d.js create mode 100644 dist/js/411.61a0af36.js create mode 100644 dist/js/480.29497b46.js create mode 100644 dist/js/482.01591f77.js create mode 100644 dist/js/526.79b94dc0.js create mode 100644 dist/js/532.93be279c.js create mode 100644 dist/js/610.1cf4540c.js create mode 100644 dist/js/613.723347ee.js create mode 100644 dist/js/669.0ac07f76.js create mode 100644 dist/js/68.c24736b7.js create mode 100644 dist/js/686.7fb0740f.js create mode 100644 dist/js/688.d8e61f49.js create mode 100644 dist/js/713.a8dafbcf.js create mode 100644 dist/js/79.ccad89c8.js create mode 100644 dist/js/853.0818f2d8.js create mode 100644 dist/js/887.0c12e807.js create mode 100644 dist/js/899.d926aa7a.js create mode 100644 dist/js/957.faa3bf0b.js create mode 100644 dist/js/964.9b10c5b9.js create mode 100644 dist/js/972.0bd9bc97.js create mode 100644 dist/js/app.5d1bf9ee.js create mode 100644 dist/json.worker.d948a982e2f16fb89f59c7b12029d64a.js create mode 100644 dist/report.html create mode 100644 webui/api.go diff --git a/config_template.go b/config_template.go index 09f0a64a..c16fc117 100644 --- a/config_template.go +++ b/config_template.go @@ -41,7 +41,6 @@ settings: master_id : ["1","2"] #群场景尚未开放获取管理员和列表能力,手动从日志中获取需要设置为管理,的user_id并填入(适用插件有权限判断场景) enable_ws_server: true #是否启用正向ws服务器 监听server_dir:port/ws ws_server_token : "12345" #正向ws的token 不启动正向ws可忽略 - ws_server_token : "12345" #正向ws的token 不启动正向ws可忽略 identify_file: true #自动生成域名校验文件,在q.qq.com配置信息URL,在server_dir填入自己已备案域名,正确解析到机器人所在服务器ip地址,机器人即可发送链接 crt: "" #证书路径 从你的域名服务商或云服务商申请签发SSL证书(qq要求SSL) key: "" #密钥路径 Apache(crt文件、key文件)示例: "C:\\123.key" \需要双写成\\ diff --git a/dist/css/152.dee3905a.css b/dist/css/152.dee3905a.css new file mode 100644 index 00000000..ac5dd572 --- /dev/null +++ b/dist/css/152.dee3905a.css @@ -0,0 +1 @@ +.monaco-aria-container{left:-999em;position:absolute}.monaco-editor .selection-anchor{background-color:#007acc;width:2px!important}.monaco-editor .bracket-match{background-color:var(--vscode-editorBracketMatch-background);border:1px solid var(--vscode-editorBracketMatch-border);box-sizing:border-box}@font-face{font-display:block;font-family:codicon;src:url(../fonts/codicon.4a477f66.ttf) format("truetype")}.codicon[class*=codicon-]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font:normal normal normal 16px/1 codicon;text-align:center;text-decoration:none;text-rendering:auto;text-transform:none;user-select:none;-webkit-user-select:none}.codicon-wrench-subaction{opacity:.5}@keyframes codicon-spin{to{transform:rotate(1turn)}}.codicon-gear.codicon-modifier-spin,.codicon-loading.codicon-modifier-spin,.codicon-notebook-state-executing.codicon-modifier-spin,.codicon-sync.codicon-modifier-spin{animation:codicon-spin 1.5s steps(30) infinite}.codicon-modifier-disabled{opacity:.4}.codicon-loading,.codicon-tree-item-loading:before{animation-duration:1s!important;animation-timing-function:cubic-bezier(.53,.21,.29,.67)!important}.monaco-editor .codicon.codicon-symbol-array,.monaco-workbench .codicon.codicon-symbol-array{color:var(--vscode-symbolIcon-arrayForeground)}.monaco-editor .codicon.codicon-symbol-boolean,.monaco-workbench .codicon.codicon-symbol-boolean{color:var(--vscode-symbolIcon-booleanForeground)}.monaco-editor .codicon.codicon-symbol-class,.monaco-workbench .codicon.codicon-symbol-class{color:var(--vscode-symbolIcon-classForeground)}.monaco-editor .codicon.codicon-symbol-method,.monaco-workbench .codicon.codicon-symbol-method{color:var(--vscode-symbolIcon-methodForeground)}.monaco-editor .codicon.codicon-symbol-color,.monaco-workbench .codicon.codicon-symbol-color{color:var(--vscode-symbolIcon-colorForeground)}.monaco-editor .codicon.codicon-symbol-constant,.monaco-workbench .codicon.codicon-symbol-constant{color:var(--vscode-symbolIcon-constantForeground)}.monaco-editor .codicon.codicon-symbol-constructor,.monaco-workbench .codicon.codicon-symbol-constructor{color:var(--vscode-symbolIcon-constructorForeground)}.monaco-editor .codicon.codicon-symbol-enum,.monaco-editor .codicon.codicon-symbol-value,.monaco-workbench .codicon.codicon-symbol-enum,.monaco-workbench .codicon.codicon-symbol-value{color:var(--vscode-symbolIcon-enumeratorForeground)}.monaco-editor .codicon.codicon-symbol-enum-member,.monaco-workbench .codicon.codicon-symbol-enum-member{color:var(--vscode-symbolIcon-enumeratorMemberForeground)}.monaco-editor .codicon.codicon-symbol-event,.monaco-workbench .codicon.codicon-symbol-event{color:var(--vscode-symbolIcon-eventForeground)}.monaco-editor .codicon.codicon-symbol-field,.monaco-workbench .codicon.codicon-symbol-field{color:var(--vscode-symbolIcon-fieldForeground)}.monaco-editor .codicon.codicon-symbol-file,.monaco-workbench .codicon.codicon-symbol-file{color:var(--vscode-symbolIcon-fileForeground)}.monaco-editor .codicon.codicon-symbol-folder,.monaco-workbench .codicon.codicon-symbol-folder{color:var(--vscode-symbolIcon-folderForeground)}.monaco-editor .codicon.codicon-symbol-function,.monaco-workbench .codicon.codicon-symbol-function{color:var(--vscode-symbolIcon-functionForeground)}.monaco-editor .codicon.codicon-symbol-interface,.monaco-workbench .codicon.codicon-symbol-interface{color:var(--vscode-symbolIcon-interfaceForeground)}.monaco-editor .codicon.codicon-symbol-key,.monaco-workbench .codicon.codicon-symbol-key{color:var(--vscode-symbolIcon-keyForeground)}.monaco-editor .codicon.codicon-symbol-keyword,.monaco-workbench .codicon.codicon-symbol-keyword{color:var(--vscode-symbolIcon-keywordForeground)}.monaco-editor .codicon.codicon-symbol-module,.monaco-workbench .codicon.codicon-symbol-module{color:var(--vscode-symbolIcon-moduleForeground)}.monaco-editor .codicon.codicon-symbol-namespace,.monaco-workbench .codicon.codicon-symbol-namespace{color:var(--vscode-symbolIcon-namespaceForeground)}.monaco-editor .codicon.codicon-symbol-null,.monaco-workbench .codicon.codicon-symbol-null{color:var(--vscode-symbolIcon-nullForeground)}.monaco-editor .codicon.codicon-symbol-number,.monaco-workbench .codicon.codicon-symbol-number{color:var(--vscode-symbolIcon-numberForeground)}.monaco-editor .codicon.codicon-symbol-object,.monaco-workbench .codicon.codicon-symbol-object{color:var(--vscode-symbolIcon-objectForeground)}.monaco-editor .codicon.codicon-symbol-operator,.monaco-workbench .codicon.codicon-symbol-operator{color:var(--vscode-symbolIcon-operatorForeground)}.monaco-editor .codicon.codicon-symbol-package,.monaco-workbench .codicon.codicon-symbol-package{color:var(--vscode-symbolIcon-packageForeground)}.monaco-editor .codicon.codicon-symbol-property,.monaco-workbench .codicon.codicon-symbol-property{color:var(--vscode-symbolIcon-propertyForeground)}.monaco-editor .codicon.codicon-symbol-reference,.monaco-workbench .codicon.codicon-symbol-reference{color:var(--vscode-symbolIcon-referenceForeground)}.monaco-editor .codicon.codicon-symbol-snippet,.monaco-workbench .codicon.codicon-symbol-snippet{color:var(--vscode-symbolIcon-snippetForeground)}.monaco-editor .codicon.codicon-symbol-string,.monaco-workbench .codicon.codicon-symbol-string{color:var(--vscode-symbolIcon-stringForeground)}.monaco-editor .codicon.codicon-symbol-struct,.monaco-workbench .codicon.codicon-symbol-struct{color:var(--vscode-symbolIcon-structForeground)}.monaco-editor .codicon.codicon-symbol-text,.monaco-workbench .codicon.codicon-symbol-text{color:var(--vscode-symbolIcon-textForeground)}.monaco-editor .codicon.codicon-symbol-type-parameter,.monaco-workbench .codicon.codicon-symbol-type-parameter{color:var(--vscode-symbolIcon-typeParameterForeground)}.monaco-editor .codicon.codicon-symbol-unit,.monaco-workbench .codicon.codicon-symbol-unit{color:var(--vscode-symbolIcon-unitForeground)}.monaco-editor .codicon.codicon-symbol-variable,.monaco-workbench .codicon.codicon-symbol-variable{color:var(--vscode-symbolIcon-variableForeground)}.monaco-editor .lightBulbWidget{align-items:center;display:flex;justify-content:center}.monaco-editor .lightBulbWidget:hover{cursor:pointer}.monaco-editor .lightBulbWidget.codicon-light-bulb{color:var(--vscode-editorLightBulb-foreground)}.monaco-editor .lightBulbWidget.codicon-lightbulb-autofix{color:var(--vscode-editorLightBulbAutoFix-foreground,var(--vscode-editorLightBulb-foreground))}.monaco-editor .lightBulbWidget:before{position:relative;z-index:2}.monaco-editor .lightBulbWidget:after{background-color:var(--vscode-editor-background);content:"";display:block;height:100%;left:0;opacity:.3;position:absolute;top:0;width:100%;z-index:1}.monaco-editor .monaco-editor-overlaymessage{padding-bottom:8px;z-index:10000}.monaco-editor .monaco-editor-overlaymessage.below{padding-bottom:0;padding-top:8px;z-index:10000}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.monaco-editor .monaco-editor-overlaymessage.fadeIn{animation:fadeIn .15s ease-out}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.monaco-editor .monaco-editor-overlaymessage.fadeOut{animation:fadeOut .1s ease-out}.monaco-editor .monaco-editor-overlaymessage .message{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-inputValidation-infoBorder);border-radius:3px;color:var(--vscode-editorHoverWidget-foreground);padding:2px 4px}.monaco-editor .monaco-editor-overlaymessage .message p{margin-block:0}.monaco-editor .monaco-editor-overlaymessage .message a{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-editor-overlaymessage .message a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor.hc-black .monaco-editor-overlaymessage .message,.monaco-editor.hc-light .monaco-editor-overlaymessage .message{border-width:2px}.monaco-editor .monaco-editor-overlaymessage .anchor{border:8px solid #0000;height:0!important;left:2px;position:absolute;width:0!important;z-index:1000}.monaco-editor .monaco-editor-overlaymessage .anchor.top{border-bottom-color:var(--vscode-inputValidation-infoBorder)}.monaco-editor .monaco-editor-overlaymessage .anchor.below{border-top-color:var(--vscode-inputValidation-infoBorder)}.monaco-editor .monaco-editor-overlaymessage.below .anchor.below,.monaco-editor .monaco-editor-overlaymessage:not(.below) .anchor.top{display:none}.monaco-editor .monaco-editor-overlaymessage.below .anchor.top{display:inherit;top:-8px}.monaco-editor .rendered-markdown kbd{background-color:var(--vscode-keybindingLabel-background);border-color:var(--vscode-keybindingLabel-border);border-bottom-color:var(--vscode-keybindingLabel-bottomBorder);border-radius:3px;border-style:solid;border-width:1px;box-shadow:inset 0 -1px 0 var(--vscode-widget-shadow);color:var(--vscode-keybindingLabel-foreground);padding:1px 3px;vertical-align:middle}.monaco-list{height:100%;position:relative;white-space:nowrap;width:100%}.monaco-list.mouse-support{user-select:none;-webkit-user-select:none}.monaco-list>.monaco-scrollable-element{height:100%}.monaco-list-rows{height:100%;position:relative;width:100%}.monaco-list.horizontal-scrolling .monaco-list-rows{min-width:100%;width:auto}.monaco-list-row{box-sizing:border-box;overflow:hidden;position:absolute;width:100%}.monaco-list.mouse-support .monaco-list-row{cursor:pointer;touch-action:none}.monaco-list-row.scrolling{display:none!important}.monaco-list.element-focused,.monaco-list.selection-multiple,.monaco-list.selection-single{outline:0!important}.monaco-drag-image{border-radius:10px;display:inline-block;font-size:12px;padding:1px 7px;position:absolute;z-index:1000}.monaco-list-type-filter-message{box-sizing:border-box;height:100%;left:0;opacity:.7;padding:40px 1em 1em;pointer-events:none;position:absolute;text-align:center;top:0;white-space:normal;width:100%}.monaco-list-type-filter-message:empty{display:none}.monaco-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.monaco-scrollable-element>.visible{background:#0000;opacity:1;transition:opacity .1s linear;z-index:11}.monaco-scrollable-element>.invisible{opacity:0;pointer-events:none}.monaco-scrollable-element>.invisible.fade{transition:opacity .8s linear}.monaco-scrollable-element>.shadow{display:none;position:absolute}.monaco-scrollable-element>.shadow.top{box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset;display:block;height:3px;left:3px;top:0;width:100%}.monaco-scrollable-element>.shadow.left{box-shadow:var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset;display:block;height:100%;left:0;top:3px;width:3px}.monaco-scrollable-element>.shadow.top-left-corner{display:block;height:3px;left:0;top:0;width:3px}.monaco-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset}.monaco-scrollable-element>.scrollbar>.slider{background:var(--vscode-scrollbarSlider-background)}.monaco-scrollable-element>.scrollbar>.slider:hover{background:var(--vscode-scrollbarSlider-hoverBackground)}.monaco-scrollable-element>.scrollbar>.slider.active{background:var(--vscode-scrollbarSlider-activeBackground)}.monaco-select-box-dropdown-padding{--dropdown-padding-top:1px;--dropdown-padding-bottom:1px}.hc-black .monaco-select-box-dropdown-padding,.hc-light .monaco-select-box-dropdown-padding{--dropdown-padding-top:3px;--dropdown-padding-bottom:4px}.monaco-select-box-dropdown-container{box-sizing:border-box;display:none}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown *{margin:0}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown a:focus{outline:1px solid -webkit-focus-ring-color;outline-offset:-1px}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown code{font-family:var(--monaco-monospace-font);line-height:15px}.monaco-select-box-dropdown-container.visible{border-bottom-left-radius:3px;border-bottom-right-radius:3px;display:flex;flex-direction:column;overflow:hidden;text-align:left;width:1px}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container{align-self:flex-start;box-sizing:border-box;flex:0 0 auto;overflow:hidden;padding-bottom:var(--dropdown-padding-bottom);padding-left:1px;padding-right:1px;padding-top:var(--dropdown-padding-top);width:100%}.monaco-select-box-dropdown-container>.select-box-details-pane{padding:5px}.hc-black .monaco-select-box-dropdown-container>.select-box-dropdown-list-container{padding-bottom:var(--dropdown-padding-bottom);padding-top:var(--dropdown-padding-top)}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row{cursor:pointer}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-text{float:left;overflow:hidden;padding-left:3.5px;text-overflow:ellipsis;white-space:nowrap}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-detail{float:left;opacity:.7;overflow:hidden;padding-left:3.5px;text-overflow:ellipsis;white-space:nowrap}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-decorator-right{float:right;overflow:hidden;padding-right:10px;text-overflow:ellipsis;white-space:nowrap}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.visually-hidden{height:1px;left:-10000px;overflow:hidden;position:absolute;top:auto;width:1px}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control{align-self:flex-start;flex:1 1 auto;opacity:0}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control>.width-control-div{max-height:0;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control>.width-control-div>.option-text-width-control{padding-left:4px;padding-right:8px;white-space:nowrap}.monaco-select-box{border-radius:2px;cursor:pointer;width:100%}.monaco-select-box-dropdown-container{font-size:13px;font-weight:400;text-transform:none}.monaco-action-bar .action-item.select-container{cursor:default}.monaco-action-bar .action-item .monaco-select-box{cursor:pointer;min-height:18px;min-width:100px;padding:2px 23px 2px 8px}.mac .monaco-action-bar .action-item .monaco-select-box{border-radius:5px;font-size:11px}.monaco-action-bar{height:100%;white-space:nowrap}.monaco-action-bar .actions-container{align-items:center;display:flex;height:100%;margin:0 auto;padding:0;width:100%}.monaco-action-bar.vertical .actions-container{display:inline-block}.monaco-action-bar .action-item{align-items:center;cursor:pointer;display:block;justify-content:center;position:relative}.monaco-action-bar .action-item.disabled{cursor:default}.monaco-action-bar .action-item .codicon,.monaco-action-bar .action-item .icon{display:block}.monaco-action-bar .action-item .codicon{align-items:center;display:flex;height:16px;width:16px}.monaco-action-bar .action-label{border-radius:5px;display:flex;font-size:11px;padding:3px}.monaco-action-bar .action-item.disabled .action-label,.monaco-action-bar .action-item.disabled .action-label:before,.monaco-action-bar .action-item.disabled .action-label:hover{opacity:.6}.monaco-action-bar.vertical{text-align:left}.monaco-action-bar.vertical .action-item{display:block}.monaco-action-bar.vertical .action-label.separator{border-bottom:1px solid #bbb;display:block;margin-left:.8em;margin-right:.8em;padding-top:1px}.monaco-action-bar .action-item .action-label.separator{background-color:#bbb;cursor:default;height:16px;margin:5px 4px!important;min-width:1px;padding:0;width:1px}.secondary-actions .monaco-action-bar .action-label{margin-left:6px}.monaco-action-bar .action-item.select-container{align-items:center;display:flex;flex:1;justify-content:center;margin-right:10px;max-width:170px;min-width:60px;overflow:hidden}.monaco-action-bar .action-item.action-dropdown-item{display:flex}.monaco-action-bar .action-item.action-dropdown-item>.action-dropdown-item-separator{align-items:center;cursor:default;display:flex}.monaco-action-bar .action-item.action-dropdown-item>.action-dropdown-item-separator>div{width:1px}.action-widget{background-color:var(--vscode-editorWidget-background);border:1px solid var(--vscode-editorWidget-border)!important;border-radius:0;color:var(--vscode-editorWidget-foreground);display:block;font-size:13px;max-width:80vw;min-width:160px;width:100%;z-index:40}.context-view-block{z-index:-1}.context-view-block,.context-view-pointerBlock{cursor:auto;height:100%;left:0;position:fixed;top:0;width:100%}.context-view-pointerBlock{z-index:2}.action-widget .monaco-list{border:0!important;user-select:none;-webkit-user-select:none}.action-widget .monaco-list:focus:before{outline:0!important}.action-widget .monaco-list .monaco-scrollable-element{overflow:visible}.action-widget .monaco-list .monaco-list-row{cursor:pointer;padding:0 10px;touch-action:none;white-space:nowrap;width:100%}.action-widget .monaco-list .monaco-list-row.action.focused:not(.option-disabled){background-color:var(--vscode-quickInputList-focusBackground)!important;color:var(--vscode-quickInputList-focusForeground);outline:1px solid var(--vscode-menu-selectionBorder,#0000);outline-offset:-1px}.action-widget .monaco-list-row.group-header{color:var(--vscode-pickerGroup-foreground)!important;font-weight:600}.action-widget .monaco-list .group-header,.action-widget .monaco-list .option-disabled,.action-widget .monaco-list .option-disabled .focused,.action-widget .monaco-list .option-disabled .focused:before,.action-widget .monaco-list .option-disabled:before{-webkit-touch-callout:none;background-color:initial!important;cursor:default!important;outline:0 solid!important;-webkit-user-select:none;user-select:none}.action-widget .monaco-list-row.action{align-items:center;display:flex;gap:6px}.action-widget .monaco-list-row.action.option-disabled{color:var(--vscode-disabledForeground)}.action-widget .monaco-list-row.action.option-disabled .codicon{opacity:.4}.action-widget .monaco-list-row.action:not(.option-disabled) .codicon{color:inherit}.action-widget .monaco-list-row.action .title{flex:1;overflow:hidden;text-overflow:ellipsis}.action-widget .action-widget-action-bar{background-color:var(--vscode-editorHoverWidget-statusBarBackground);border-top:1px solid var(--vscode-editorHoverWidget-border)}.action-widget .action-widget-action-bar:before{content:"";display:block;width:100%}.action-widget .action-widget-action-bar .actions-container{padding:0 8px}.action-widget-action-bar .action-label{color:var(--vscode-textLink-activeForeground);font-size:12px;line-height:22px;padding:0;pointer-events:all}.action-widget-action-bar .action-item{margin-right:16px;pointer-events:none}.action-widget-action-bar .action-label:hover{background-color:initial!important}.monaco-keybinding{align-items:center;display:flex;line-height:10px}.monaco-keybinding>.monaco-keybinding-key{border-radius:3px;border-style:solid;border-width:1px;display:inline-block;font-size:11px;margin:0 2px;padding:3px 5px;vertical-align:middle}.monaco-keybinding>.monaco-keybinding-key:first-child{margin-left:0}.monaco-keybinding>.monaco-keybinding-key:last-child{margin-right:0}.monaco-keybinding>.monaco-keybinding-key-separator{display:inline-block}.monaco-keybinding>.monaco-keybinding-key-chord-separator{width:6px}.monaco-editor .codelens-decoration{font-feature-settings:var(--vscode-editorCodeLens-fontFeatureSettings);color:var(--vscode-editorCodeLens-foreground);display:inline-block;font-family:var(--vscode-editorCodeLens-fontFamily),var(--vscode-editorCodeLens-fontFamilyDefault);font-size:var(--vscode-editorCodeLens-fontSize);line-height:var(--vscode-editorCodeLens-lineHeight);overflow:hidden;padding-right:calc(var(--vscode-editorCodeLens-fontSize)*.5);text-overflow:ellipsis;white-space:nowrap}.monaco-editor .codelens-decoration>a,.monaco-editor .codelens-decoration>span{user-select:none;-webkit-user-select:none;vertical-align:sub;white-space:nowrap}.monaco-editor .codelens-decoration>a{text-decoration:none}.monaco-editor .codelens-decoration>a:hover{cursor:pointer}.monaco-editor .codelens-decoration>a:hover,.monaco-editor .codelens-decoration>a:hover .codicon{color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .codelens-decoration .codicon{color:currentColor!important;color:var(--vscode-editorCodeLens-foreground);font-size:var(--vscode-editorCodeLens-fontSize);line-height:var(--vscode-editorCodeLens-lineHeight);vertical-align:middle}.monaco-editor .codelens-decoration>a:hover .codicon:before{cursor:pointer}@keyframes fadein{0%{opacity:0;visibility:visible}to{opacity:1}}.monaco-editor .codelens-decoration.fadein{animation:fadein .1s linear}.monaco-editor.hc-light .dnd-target,.monaco-editor.vs .dnd-target{border-right:2px dotted #000;color:#fff}.monaco-editor.vs-dark .dnd-target{border-right:2px dotted #aeafad;color:#51504f}.monaco-editor.hc-black .dnd-target{border-right:2px dotted #fff;color:#000}.monaco-editor.hc-black.mac.mouse-default .view-lines,.monaco-editor.hc-light.mac.mouse-default .view-lines,.monaco-editor.mouse-default .view-lines,.monaco-editor.vs-dark.mac.mouse-default .view-lines{cursor:default}.monaco-editor.hc-black.mac.mouse-copy .view-lines,.monaco-editor.hc-light.mac.mouse-copy .view-lines,.monaco-editor.mouse-copy .view-lines,.monaco-editor.vs-dark.mac.mouse-copy .view-lines{cursor:copy}.inline-editor-progress-decoration{display:inline-block;height:1em;width:1em}.inline-progress-widget{align-items:center;display:flex!important;justify-content:center}.inline-progress-widget .icon{font-size:80%!important}.inline-progress-widget:hover .icon{animation:none;font-size:90%!important}.inline-progress-widget:hover .icon:before{content:"\ea76"}.monaco-text-button{align-items:center;border:1px solid var(--vscode-button-border,#0000);border-radius:2px;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;line-height:18px;padding:4px;text-align:center;width:100%}.monaco-text-button:focus{outline-offset:2px!important}.monaco-text-button:hover{text-decoration:none!important}.monaco-button.disabled,.monaco-button.disabled:focus{cursor:default;opacity:.4!important}.monaco-text-button .codicon{color:inherit!important;margin:0 .2em}.monaco-text-button.monaco-text-button-with-short-label{flex-direction:row;flex-wrap:wrap;height:28px;overflow:hidden;padding:0 4px}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label{flex-basis:100%}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label-short{flex-grow:1;overflow:hidden;width:0}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label,.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label-short{align-items:center;display:flex;font-style:inherit;font-weight:400;justify-content:center;padding:4px 0}.monaco-button-dropdown{cursor:pointer;display:flex}.monaco-button-dropdown.disabled{cursor:default}.monaco-button-dropdown>.monaco-button:focus{outline-offset:-1px!important}.monaco-button-dropdown.disabled>.monaco-button-dropdown-separator,.monaco-button-dropdown.disabled>.monaco-button.disabled,.monaco-button-dropdown.disabled>.monaco-button.disabled:focus{opacity:.4!important}.monaco-button-dropdown>.monaco-button.monaco-text-button{border-right-width:0!important}.monaco-button-dropdown .monaco-button-dropdown-separator{cursor:default;padding:4px 0}.monaco-button-dropdown .monaco-button-dropdown-separator>div{height:100%;width:1px}.monaco-button-dropdown>.monaco-button.monaco-dropdown-button{border:1px solid var(--vscode-button-border,#0000);border-left-width:0!important;border-radius:0 2px 2px 0}.monaco-button-dropdown>.monaco-button.monaco-text-button{border-radius:2px 0 0 2px}.monaco-description-button{align-items:center;display:flex;flex-direction:column;margin:4px 5px}.monaco-description-button .monaco-button-description{font-size:11px;font-style:italic;padding:4px 20px}.monaco-description-button .monaco-button-description,.monaco-description-button .monaco-button-label{align-items:center;display:flex;justify-content:center}.monaco-description-button .monaco-button-description>.codicon,.monaco-description-button .monaco-button-label>.codicon{color:inherit!important;margin:0 .2em}.monaco-button-dropdown.default-colors>.monaco-button,.monaco-button.default-colors{background-color:var(--vscode-button-background);color:var(--vscode-button-foreground)}.monaco-button-dropdown.default-colors>.monaco-button:hover,.monaco-button.default-colors:hover{background-color:var(--vscode-button-hoverBackground)}.monaco-button-dropdown.default-colors>.monaco-button.secondary,.monaco-button.default-colors.secondary{background-color:var(--vscode-button-secondaryBackground);color:var(--vscode-button-secondaryForeground)}.monaco-button-dropdown.default-colors>.monaco-button.secondary:hover,.monaco-button.default-colors.secondary:hover{background-color:var(--vscode-button-secondaryHoverBackground)}.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator{background-color:var(--vscode-button-background);border-bottom:1px solid var(--vscode-button-border);border-top:1px solid var(--vscode-button-border)}.monaco-button-dropdown.default-colors .monaco-button.secondary+.monaco-button-dropdown-separator{background-color:var(--vscode-button-secondaryBackground)}.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator>div{background-color:var(--vscode-button-separator)}.post-edit-widget{background-color:var(--vscode-editorWidget-background);border:1px solid var(--vscode-widget-border,#0000);border-radius:4px;box-shadow:0 0 8px 2px var(--vscode-widget-shadow);overflow:hidden}.post-edit-widget .monaco-button{border:none;border-radius:0;padding:2px}.post-edit-widget .monaco-button:hover{background-color:var(--vscode-button-secondaryHoverBackground)!important}.post-edit-widget .monaco-button .codicon{margin:0}::-ms-clear{display:none}.monaco-editor .editor-widget input{color:inherit}.monaco-editor{-webkit-text-size-adjust:100%;color:var(--vscode-editor-foreground);overflow:visible;position:relative}.monaco-editor,.monaco-editor-background{background-color:var(--vscode-editor-background)}.monaco-editor .rangeHighlight{background-color:var(--vscode-editor-rangeHighlightBackground);border:1px solid var(--vscode-editor-rangeHighlightBorder);box-sizing:border-box}.monaco-editor.hc-black .rangeHighlight,.monaco-editor.hc-light .rangeHighlight{border-style:dotted}.monaco-editor .symbolHighlight{background-color:var(--vscode-editor-symbolHighlightBackground);border:1px solid var(--vscode-editor-symbolHighlightBorder);box-sizing:border-box}.monaco-editor.hc-black .symbolHighlight,.monaco-editor.hc-light .symbolHighlight{border-style:dotted}.monaco-editor .overflow-guard{overflow:hidden;position:relative}.monaco-editor .view-overlays{position:absolute;top:0}.monaco-editor .squiggly-error{border-bottom:4px double var(--vscode-editorError-border)}.monaco-editor .squiggly-error:before{background:var(--vscode-editorError-background);content:"";display:block;height:100%;width:100%}.monaco-editor .squiggly-warning{border-bottom:4px double var(--vscode-editorWarning-border)}.monaco-editor .squiggly-warning:before{background:var(--vscode-editorWarning-background);content:"";display:block;height:100%;width:100%}.monaco-editor .squiggly-info{border-bottom:4px double var(--vscode-editorInfo-border)}.monaco-editor .squiggly-info:before{background:var(--vscode-editorInfo-background);content:"";display:block;height:100%;width:100%}.monaco-editor .squiggly-hint{border-bottom:2px dotted var(--vscode-editorHint-border)}.monaco-editor.showUnused .squiggly-unnecessary{border-bottom:2px dashed var(--vscode-editorUnnecessaryCode-border)}.monaco-editor.showDeprecated .squiggly-inline-deprecated{text-decoration:line-through;text-decoration-color:var(--vscode-editor-foreground,inherit)}.monaco-editor .inputarea{background-color:initial;border:none;color:#0000;margin:0;min-height:0;min-width:0;outline:none!important;overflow:hidden;padding:0;position:absolute;resize:none;z-index:-10}.monaco-editor .inputarea.ime-input{caret-color:var(--vscode-editorCursor-foreground);color:var(--vscode-editor-foreground);z-index:10}.monaco-editor .margin-view-overlays .line-numbers{box-sizing:border-box;cursor:default;display:inline-block;font-variant-numeric:tabular-nums;height:100%;position:absolute;text-align:right;vertical-align:middle}.monaco-editor .relative-current-line-number{display:inline-block;text-align:left;width:100%}.monaco-editor .margin-view-overlays .line-numbers.lh-odd{margin-top:1px}.monaco-editor .line-numbers{color:var(--vscode-editorLineNumber-foreground)}.monaco-editor .line-numbers.active-line-number{color:var(--vscode-editorLineNumber-activeForeground)}.monaco-editor .margin{background-color:var(--vscode-editorGutter-background)}.monaco-mouse-cursor-text{cursor:text}.monaco-editor .margin-view-overlays .current-line,.monaco-editor .view-overlays .current-line{box-sizing:border-box;display:block;left:0;position:absolute;top:0}.monaco-editor .margin-view-overlays .current-line.current-line-margin.current-line-margin-both{border-right:0}.monaco-editor .lines-content .cdr{position:absolute}.monaco-editor .lines-content .core-guide{box-sizing:border-box;position:absolute}.mtkcontrol{background:#960000!important;color:#fff!important}.mtkoverflow{background-color:var(--vscode-button-background,--vscode-editor-background);border-color:var(--vscode-contrastBorder);border-radius:2px;border-style:solid;border-width:1px;color:var(--vscode-button-foreground,--vscode-editor-foreground);cursor:pointer;padding:4px}.mtkoverflow:hover{background-color:var(--vscode-button-hoverBackground)}.monaco-editor.no-user-select .lines-content,.monaco-editor.no-user-select .view-line,.monaco-editor.no-user-select .view-lines{user-select:none;-webkit-user-select:none}.monaco-editor.mac .lines-content:hover,.monaco-editor.mac .view-line:hover,.monaco-editor.mac .view-lines:hover{user-select:text;-webkit-user-select:text;-ms-user-select:text}.monaco-editor.enable-user-select{user-select:auto;-webkit-user-select:initial}.monaco-editor .view-lines{white-space:nowrap}.monaco-editor .view-line{position:absolute;width:100%}.monaco-editor .mtkw,.monaco-editor .mtkz{color:var(--vscode-editorWhitespace-foreground)!important}.monaco-editor .mtkz{display:inline-block}.monaco-editor .lines-decorations{background:#fff;position:absolute;top:0}.monaco-editor .margin-view-overlays .cldr{height:100%;position:absolute}.monaco-editor .glyph-margin{position:absolute;top:0}.monaco-editor .glyph-margin-widgets .cgmr{align-items:center;display:flex;justify-content:center;position:absolute}.monaco-editor .glyph-margin-widgets .cgmr.codicon-modifier-spin:before{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.monaco-editor .margin-view-overlays .cmdr{height:100%;left:0;position:absolute;width:100%}.monaco-editor .minimap.slider-mouseover .minimap-slider{opacity:0;transition:opacity .1s linear}.monaco-editor .minimap.slider-mouseover .minimap-slider.active,.monaco-editor .minimap.slider-mouseover:hover .minimap-slider{opacity:1}.monaco-editor .minimap-slider .minimap-slider-horizontal{background:var(--vscode-minimapSlider-background)}.monaco-editor .minimap-slider:hover .minimap-slider-horizontal{background:var(--vscode-minimapSlider-hoverBackground)}.monaco-editor .minimap-slider.active .minimap-slider-horizontal{background:var(--vscode-minimapSlider-activeBackground)}.monaco-editor .minimap-shadow-visible{box-shadow:var(--vscode-scrollbar-shadow) -6px 0 6px -6px inset}.monaco-editor .minimap-shadow-hidden{position:absolute;width:0}.monaco-editor .minimap-shadow-visible{left:-6px;position:absolute;width:6px}.monaco-editor.no-minimap-shadow .minimap-shadow-visible{left:-1px;position:absolute;width:1px}.minimap.autohide{opacity:0;transition:opacity .5s}.minimap.autohide:hover{opacity:1}.monaco-editor .overlayWidgets{left:0;position:absolute;top:0}.monaco-editor .view-ruler{box-shadow:1px 0 0 0 var(--vscode-editorRuler-foreground) inset;position:absolute;top:0}.monaco-editor .scroll-decoration{box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset;height:6px;left:0;position:absolute;top:0}.monaco-editor .lines-content .cslr{position:absolute}.monaco-editor .focused .selected-text{background-color:var(--vscode-editor-selectionBackground)}.monaco-editor .selected-text{background-color:var(--vscode-editor-inactiveSelectionBackground)}.monaco-editor .top-left-radius{border-top-left-radius:3px}.monaco-editor .bottom-left-radius{border-bottom-left-radius:3px}.monaco-editor .top-right-radius{border-top-right-radius:3px}.monaco-editor .bottom-right-radius{border-bottom-right-radius:3px}.monaco-editor.hc-black .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-black .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-black .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-black .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor.hc-light .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-light .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-light .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-light .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor .cursors-layer{position:absolute;top:0}.monaco-editor .cursors-layer>.cursor{box-sizing:border-box;overflow:hidden;position:absolute}.monaco-editor .cursors-layer.cursor-smooth-caret-animation>.cursor{transition:all 80ms}.monaco-editor .cursors-layer.cursor-block-outline-style>.cursor{background:#0000!important;border-style:solid;border-width:1px}.monaco-editor .cursors-layer.cursor-underline-style>.cursor{background:#0000!important;border-bottom-style:solid;border-bottom-width:2px}.monaco-editor .cursors-layer.cursor-underline-thin-style>.cursor{background:#0000!important;border-bottom-style:solid;border-bottom-width:1px}@keyframes monaco-cursor-smooth{0%,20%{opacity:1}60%,to{opacity:0}}@keyframes monaco-cursor-phase{0%,20%{opacity:1}90%,to{opacity:0}}@keyframes monaco-cursor-expand{0%,20%{transform:scaleY(1)}80%,to{transform:scaleY(0)}}.cursor-smooth{animation:monaco-cursor-smooth .5s ease-in-out 0s 20 alternate}.cursor-phase{animation:monaco-cursor-phase .5s ease-in-out 0s 20 alternate}.cursor-expand>.cursor{animation:monaco-cursor-expand .5s ease-in-out 0s 20 alternate}.monaco-editor .blockDecorations-container{pointer-events:none;position:absolute;top:0}.monaco-editor .blockDecorations-block{box-sizing:border-box;position:absolute}.monaco-editor .mwh{color:var(--vscode-editorWhitespace-foreground)!important;position:absolute}.monaco-editor .peekview-widget .head{box-sizing:border-box;display:flex;flex-wrap:nowrap;justify-content:space-between}.monaco-editor .peekview-widget .head .peekview-title{align-items:baseline;display:flex;font-size:13px;margin-left:20px;min-width:0;overflow:hidden;text-overflow:ellipsis}.monaco-editor .peekview-widget .head .peekview-title.clickable{cursor:pointer}.monaco-editor .peekview-widget .head .peekview-title .dirname:not(:empty){font-size:.9em;margin-left:.5em}.monaco-editor .peekview-widget .head .peekview-title .dirname,.monaco-editor .peekview-widget .head .peekview-title .filename,.monaco-editor .peekview-widget .head .peekview-title .meta{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-editor .peekview-widget .head .peekview-title .meta:not(:empty):before{content:"-";padding:0 .3em}.monaco-editor .peekview-widget .head .peekview-actions{flex:1;padding-right:2px;text-align:right}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar{display:inline-block}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar,.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar>.actions-container{height:100%}.monaco-editor .peekview-widget>.body{border-top:1px solid;position:relative}.monaco-editor .peekview-widget .head .peekview-title .codicon{align-self:center;margin-right:4px}.monaco-editor .peekview-widget .monaco-list .monaco-list-row.focused .codicon{color:inherit!important}:root{--vscode-sash-size:4px}.monaco-sash{position:absolute;touch-action:none;z-index:35}.monaco-sash.disabled{pointer-events:none}.monaco-sash.mac.vertical{cursor:col-resize}.monaco-sash.vertical.minimum{cursor:e-resize}.monaco-sash.vertical.maximum{cursor:w-resize}.monaco-sash.mac.horizontal{cursor:row-resize}.monaco-sash.horizontal.minimum{cursor:s-resize}.monaco-sash.horizontal.maximum{cursor:n-resize}.monaco-sash.disabled{cursor:default!important;pointer-events:none!important}.monaco-sash.vertical{cursor:ew-resize;height:100%;top:0;width:var(--vscode-sash-size)}.monaco-sash.horizontal{cursor:ns-resize;height:var(--vscode-sash-size);left:0;width:100%}.monaco-sash:not(.disabled)>.orthogonal-drag-handle{content:" ";cursor:all-scroll;display:block;height:calc(var(--vscode-sash-size)*2);position:absolute;width:calc(var(--vscode-sash-size)*2);z-index:100}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.start,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.end{cursor:nwse-resize}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.end,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.start{cursor:nesw-resize}.monaco-sash.vertical>.orthogonal-drag-handle.start{left:calc(var(--vscode-sash-size)*-.5);top:calc(var(--vscode-sash-size)*-1)}.monaco-sash.vertical>.orthogonal-drag-handle.end{bottom:calc(var(--vscode-sash-size)*-1);left:calc(var(--vscode-sash-size)*-.5)}.monaco-sash.horizontal>.orthogonal-drag-handle.start{left:calc(var(--vscode-sash-size)*-1);top:calc(var(--vscode-sash-size)*-.5)}.monaco-sash.horizontal>.orthogonal-drag-handle.end{right:calc(var(--vscode-sash-size)*-1);top:calc(var(--vscode-sash-size)*-.5)}.monaco-sash:before{background:#0000;content:"";height:100%;pointer-events:none;position:absolute;width:100%}.monaco-workbench:not(.reduce-motion) .monaco-sash:before{transition:background-color .1s ease-out}.monaco-sash.active:before,.monaco-sash.hover:before{background:var(--vscode-sash-hoverBorder)}.monaco-sash.vertical:before{left:calc(50% - var(--vscode-sash-hover-size)/2);width:var(--vscode-sash-hover-size)}.monaco-sash.horizontal:before{height:var(--vscode-sash-hover-size);top:calc(50% - var(--vscode-sash-hover-size)/2)}.pointer-events-disabled{pointer-events:none!important}.monaco-sash.debug{background:cyan}.monaco-sash.debug.disabled{background:#0ff3}.monaco-sash.debug:not(.disabled)>.orthogonal-drag-handle{background:red}.monaco-editor .zone-widget{position:absolute;z-index:10}.monaco-editor .zone-widget .zone-widget-container{border-bottom-style:solid;border-bottom-width:0;border-top-style:solid;border-top-width:0;position:relative}.monaco-dropdown{height:100%;padding:0}.monaco-dropdown>.dropdown-label{align-items:center;cursor:pointer;display:flex;height:100%;justify-content:center}.monaco-dropdown>.dropdown-label>.action-label.disabled{cursor:default}.monaco-dropdown-with-primary{border-radius:5px;display:flex!important;flex-direction:row}.monaco-dropdown-with-primary>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{font-size:12px;line-height:16px;margin-left:-3px;padding-left:0;padding-right:0}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label>.action-label{background-position:50%;background-repeat:no-repeat;background-size:16px;display:block}.monaco-action-bar .action-item.menu-entry .action-label.icon{background-position:50%;background-repeat:no-repeat;background-size:16px;height:16px;width:16px}.monaco-dropdown-with-default{border-radius:5px;display:flex!important;flex-direction:row}.monaco-dropdown-with-default>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-default>.action-container.menu-entry>.action-label.icon{background-position:50%;background-repeat:no-repeat;background-size:16px;height:16px;width:16px}.monaco-dropdown-with-default>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{font-size:12px;line-height:16px;margin-left:-3px;padding-left:0;padding-right:0}.monaco-dropdown-with-default>.dropdown-action-container>.monaco-dropdown>.dropdown-label>.action-label{background-position:50%;background-repeat:no-repeat;background-size:16px;display:block}.monaco-split-view2{height:100%;position:relative;width:100%}.monaco-split-view2>.sash-container{height:100%;pointer-events:none;position:absolute;width:100%}.monaco-split-view2>.sash-container>.monaco-sash{pointer-events:auto}.monaco-split-view2>.monaco-scrollable-element{height:100%;width:100%}.monaco-split-view2>.monaco-scrollable-element>.split-view-container{height:100%;position:relative;white-space:nowrap;width:100%}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view{position:absolute;white-space:normal}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view:not(.visible){display:none}.monaco-split-view2.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view{width:100%}.monaco-split-view2.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view{height:100%}.monaco-split-view2.separator-border>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{background-color:var(--separator-border);content:" ";left:0;pointer-events:none;position:absolute;top:0;z-index:5}.monaco-split-view2.separator-border.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{height:100%;width:1px}.monaco-split-view2.separator-border.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{height:1px;width:100%}.monaco-table{display:flex;flex-direction:column;height:100%;overflow:hidden;position:relative;white-space:nowrap;width:100%}.monaco-table>.monaco-split-view2{border-bottom:1px solid #0000}.monaco-table>.monaco-list{flex:1}.monaco-table-tr{display:flex;height:100%}.monaco-table-th{font-weight:700;height:100%;overflow:hidden;text-overflow:ellipsis;width:100%}.monaco-table-td,.monaco-table-th{box-sizing:border-box;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{border-left:1px solid #0000;content:"";left:calc(var(--vscode-sash-size)/2);position:absolute;width:0}.monaco-workbench:not(.reduce-motion) .monaco-table>.monaco-split-view2,.monaco-workbench:not(.reduce-motion) .monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{transition:border-color .2s ease-out}.monaco-custom-toggle{border:1px solid #0000;border-radius:3px;box-sizing:border-box;cursor:pointer;float:left;height:20px;margin-left:2px;overflow:hidden;padding:1px;user-select:none;-webkit-user-select:none;width:20px}.monaco-custom-toggle:hover{background-color:var(--vscode-inputOption-hoverBackground)}.hc-black .monaco-custom-toggle:hover,.hc-light .monaco-custom-toggle:hover{border:1px dashed var(--vscode-focusBorder)}.hc-black .monaco-custom-toggle,.hc-black .monaco-custom-toggle:hover,.hc-light .monaco-custom-toggle,.hc-light .monaco-custom-toggle:hover{background:none}.monaco-custom-toggle.monaco-checkbox{background-size:16px!important;border:1px solid #0000;border-radius:3px;height:18px;margin-left:0;margin-right:9px;opacity:1;padding:0;width:18px}.monaco-custom-toggle.monaco-checkbox:not(.checked):before{visibility:hidden}.monaco-inputbox{border-radius:2px;box-sizing:border-box;display:block;font-size:inherit;padding:0;position:relative}.monaco-inputbox>.ibwrapper>.input,.monaco-inputbox>.ibwrapper>.mirror{padding:4px 6px}.monaco-inputbox>.ibwrapper{height:100%;position:relative;width:100%}.monaco-inputbox>.ibwrapper>.input{border:none;box-sizing:border-box;color:inherit;display:inline-block;font-family:inherit;font-size:inherit;height:100%;line-height:inherit;resize:none;width:100%}.monaco-inputbox>.ibwrapper>input{text-overflow:ellipsis}.monaco-inputbox>.ibwrapper>textarea.input{display:block;outline:none;scrollbar-width:none}.monaco-inputbox>.ibwrapper>textarea.input::-webkit-scrollbar{display:none}.monaco-inputbox>.ibwrapper>textarea.input.empty{white-space:nowrap}.monaco-inputbox>.ibwrapper>.mirror{word-wrap:break-word;box-sizing:border-box;display:inline-block;left:0;position:absolute;top:0;visibility:hidden;white-space:pre-wrap;width:100%}.monaco-inputbox-container{text-align:right}.monaco-inputbox-container .monaco-inputbox-message{word-wrap:break-word;box-sizing:border-box;display:inline-block;font-size:12px;line-height:17px;margin-top:-1px;overflow:hidden;padding:.4em;text-align:left;width:100%}.monaco-inputbox .monaco-action-bar{position:absolute;right:2px;top:4px}.monaco-inputbox .monaco-action-bar .action-item{margin-left:2px}.monaco-inputbox .monaco-action-bar .action-item .codicon{background-repeat:no-repeat;height:16px;width:16px}.monaco-findInput{position:relative}.monaco-findInput .monaco-inputbox{font-size:13px;width:100%}.monaco-findInput>.controls{position:absolute;right:2px;top:3px}.vs .monaco-findInput.disabled{background-color:#e1e1e1}.vs-dark .monaco-findInput.disabled{background-color:#333}.hc-light .monaco-findInput.highlight-0 .controls,.monaco-findInput.highlight-0 .controls{animation:monaco-findInput-highlight-0 .1s linear 0s}.hc-light .monaco-findInput.highlight-1 .controls,.monaco-findInput.highlight-1 .controls{animation:monaco-findInput-highlight-1 .1s linear 0s}.hc-black .monaco-findInput.highlight-0 .controls,.vs-dark .monaco-findInput.highlight-0 .controls{animation:monaco-findInput-highlight-dark-0 .1s linear 0s}.hc-black .monaco-findInput.highlight-1 .controls,.vs-dark .monaco-findInput.highlight-1 .controls{animation:monaco-findInput-highlight-dark-1 .1s linear 0s}@keyframes monaco-findInput-highlight-0{0%{background:#fdff00cc}to{background:#0000}}@keyframes monaco-findInput-highlight-1{0%{background:#fdff00cc}99%{background:#0000}}@keyframes monaco-findInput-highlight-dark-0{0%{background:#ffffff70}to{background:#0000}}@keyframes monaco-findInput-highlight-dark-1{0%{background:#ffffff70}99%{background:#0000}}.monaco-tl-row{align-items:center;display:flex;height:100%;position:relative}.monaco-tl-row.disabled{cursor:default}.monaco-tl-indent{height:100%;left:16px;pointer-events:none;position:absolute;top:0}.hide-arrows .monaco-tl-indent{left:12px}.monaco-tl-indent>.indent-guide{border-left:1px solid #0000;box-sizing:border-box;display:inline-block;height:100%}.monaco-workbench:not(.reduce-motion) .monaco-tl-indent>.indent-guide{transition:border-color .1s linear}.monaco-tl-contents,.monaco-tl-twistie{height:100%}.monaco-tl-twistie{align-items:center;display:flex!important;flex-shrink:0;font-size:10px;justify-content:center;padding-right:6px;text-align:right;transform:translateX(3px);width:16px}.monaco-tl-contents{flex:1;overflow:hidden}.monaco-tl-twistie:before{border-radius:20px}.monaco-tl-twistie.collapsed:before{transform:rotate(-90deg)}.monaco-tl-twistie.codicon-tree-item-loading:before{animation:codicon-spin 1.25s steps(30) infinite}.monaco-tree-type-filter{border:1px solid var(--vscode-widget-border);border-bottom-left-radius:4px;border-bottom-right-radius:4px;display:flex;margin:0 6px;max-width:200px;padding:3px;position:absolute;top:0;z-index:100}.monaco-workbench:not(.reduce-motion) .monaco-tree-type-filter{transition:top .3s}.monaco-tree-type-filter.disabled{top:-40px!important}.monaco-tree-type-filter-grab{align-items:center;cursor:grab;display:flex!important;justify-content:center;margin-right:2px}.monaco-tree-type-filter-grab.grabbing{cursor:grabbing}.monaco-tree-type-filter-input{flex:1}.monaco-tree-type-filter-input .monaco-inputbox{height:23px}.monaco-tree-type-filter-input .monaco-inputbox>.ibwrapper>.input,.monaco-tree-type-filter-input .monaco-inputbox>.ibwrapper>.mirror{padding:2px 4px}.monaco-tree-type-filter-input .monaco-findInput>.controls{top:2px}.monaco-tree-type-filter-actionbar{margin-left:4px}.monaco-tree-type-filter-actionbar .monaco-action-bar .action-label{padding:2px}.monaco-editor .zone-widget .zone-widget-container.reference-zone-widget{border-bottom-width:1px;border-top-width:1px}.monaco-editor .reference-zone-widget .inline{display:inline-block;vertical-align:top}.monaco-editor .reference-zone-widget .messages{height:100%;padding:3em 0;text-align:center;width:100%}.monaco-editor .reference-zone-widget .ref-tree{background-color:var(--vscode-peekViewResult-background);color:var(--vscode-peekViewResult-lineForeground);line-height:23px}.monaco-editor .reference-zone-widget .ref-tree .reference{overflow:hidden;text-overflow:ellipsis}.monaco-editor .reference-zone-widget .ref-tree .reference-file{color:var(--vscode-peekViewResult-fileForeground);display:inline-flex;height:100%;width:100%}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .selected .reference-file{color:inherit!important}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows>.monaco-list-row.selected:not(.highlighted){background-color:var(--vscode-peekViewResult-selectionBackground);color:var(--vscode-peekViewResult-selectionForeground)!important}.monaco-editor .reference-zone-widget .ref-tree .reference-file .count{margin-left:auto;margin-right:12px}.monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight{background-color:var(--vscode-peekViewResult-matchHighlightBackground)}.monaco-editor .reference-zone-widget .preview .reference-decoration{background-color:var(--vscode-peekViewEditor-matchHighlightBackground);border:2px solid var(--vscode-peekViewEditor-matchHighlightBorder);box-sizing:border-box}.monaco-editor .reference-zone-widget .preview .monaco-editor .inputarea.ime-input,.monaco-editor .reference-zone-widget .preview .monaco-editor .monaco-editor-background{background-color:var(--vscode-peekViewEditor-background)}.monaco-editor .reference-zone-widget .preview .monaco-editor .margin{background-color:var(--vscode-peekViewEditorGutter-background)}.monaco-editor.hc-black .reference-zone-widget .ref-tree .reference-file,.monaco-editor.hc-light .reference-zone-widget .ref-tree .reference-file{font-weight:700}.monaco-editor.hc-black .reference-zone-widget .ref-tree .referenceMatch .highlight,.monaco-editor.hc-light .reference-zone-widget .ref-tree .referenceMatch .highlight{border:1px dotted var(--vscode-contrastActiveBorder,#0000);box-sizing:border-box}.monaco-count-badge{border-radius:11px;box-sizing:border-box;display:inline-block;font-size:11px;font-weight:400;line-height:11px;min-height:18px;min-width:18px;padding:3px 6px;text-align:center}.monaco-count-badge.long{border-radius:2px;line-height:normal;min-height:auto;padding:2px 3px}.monaco-icon-label{display:flex;overflow:hidden;text-overflow:ellipsis}.monaco-icon-label:before{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-position:0;background-repeat:no-repeat;background-size:16px;display:inline-block;flex-shrink:0;height:22px;line-height:inherit!important;padding-right:6px;vertical-align:top;width:16px}.monaco-icon-label-container.disabled{color:var(--vscode-disabledForeground)}.monaco-icon-label>.monaco-icon-label-container{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{color:inherit;white-space:pre}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name>.label-separator{margin:0 2px;opacity:.5}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{font-size:.9em;margin-left:.5em;opacity:.7;white-space:pre}.monaco-icon-label.nowrap>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{white-space:nowrap}.vs .monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{opacity:.95}.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-description-container>.label-description,.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{font-style:italic}.monaco-icon-label.deprecated{opacity:.66;text-decoration:line-through}.monaco-icon-label.italic:after{font-style:italic}.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-description-container>.label-description,.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{text-decoration:line-through}.monaco-icon-label:after{font-size:90%;font-weight:600;margin:auto 16px 0 5px;opacity:.75;text-align:center}.monaco-list:focus .selected .monaco-icon-label,.monaco-list:focus .selected .monaco-icon-label:after{color:inherit!important}.monaco-list-row.focused.selected .label-description,.monaco-list-row.selected .label-description{opacity:.8}.monaco-editor .goto-definition-link{color:var(--vscode-editorLink-activeForeground)!important;cursor:pointer;text-decoration:underline}.monaco-hover{animation:fadein .1s linear;box-sizing:border-box;cursor:default;line-height:1.5em;overflow:hidden;position:absolute;user-select:text;-webkit-user-select:text}.monaco-hover.hidden{display:none}.monaco-hover a:hover:not(.disabled){cursor:pointer}.monaco-hover .hover-contents:not(.html-hover-contents){padding:4px 8px}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents){word-wrap:break-word;max-width:var(--hover-maxWidth,500px)}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents) hr{min-width:100%}.monaco-hover .code,.monaco-hover h1,.monaco-hover h2,.monaco-hover h3,.monaco-hover h4,.monaco-hover h5,.monaco-hover h6,.monaco-hover p,.monaco-hover ul{margin:8px 0}.monaco-hover h1,.monaco-hover h2,.monaco-hover h3,.monaco-hover h4,.monaco-hover h5,.monaco-hover h6{line-height:1.1}.monaco-hover code{font-family:var(--monaco-monospace-font)}.monaco-hover hr{border-left:0;border-right:0;box-sizing:border-box;height:1px;margin:4px -8px -4px}.monaco-hover .code:first-child,.monaco-hover p:first-child,.monaco-hover ul:first-child{margin-top:0}.monaco-hover .code:last-child,.monaco-hover p:last-child,.monaco-hover ul:last-child{margin-bottom:0}.monaco-hover ol,.monaco-hover ul{padding-left:20px}.monaco-hover li>p{margin-bottom:0}.monaco-hover li>ul{margin-top:0}.monaco-hover code{border-radius:3px;padding:0 .4em}.monaco-hover .monaco-tokenized-source{white-space:pre-wrap}.monaco-hover .hover-row.status-bar{font-size:12px;line-height:22px}.monaco-hover .hover-row.status-bar .info{font-style:italic;padding:0 8px}.monaco-hover .hover-row.status-bar .actions{display:flex;padding:0 8px}.monaco-hover .hover-row.status-bar .actions .action-container{cursor:pointer;margin-right:16px}.monaco-hover .hover-row.status-bar .actions .action-container .action .icon{padding-right:4px}.monaco-hover .markdown-hover .hover-contents .codicon{color:inherit;font-size:inherit;vertical-align:middle}.monaco-hover .hover-contents a.code-link,.monaco-hover .hover-contents a.code-link:hover{color:inherit}.monaco-hover .hover-contents a.code-link:before{content:"("}.monaco-hover .hover-contents a.code-link:after{content:")"}.monaco-hover .hover-contents a.code-link>span{border-bottom:1px solid #0000;color:var(--vscode-textLink-foreground);text-decoration:underline;text-underline-position:under}.monaco-hover .hover-contents a.code-link>span:hover{color:var(--vscode-textLink-activeForeground)}.monaco-hover .markdown-hover .hover-contents:not(.code-hover-contents):not(.html-hover-contents) span{display:inline-block;margin-bottom:4px}.monaco-hover-content .action-container a{-webkit-user-select:none;user-select:none}.monaco-hover-content .action-container.disabled{cursor:default;opacity:.4;pointer-events:none}.monaco-editor .peekview-widget .head .peekview-title .severity-icon{display:inline-block;margin-right:4px;vertical-align:text-top}.monaco-editor .marker-widget{text-overflow:ellipsis;white-space:nowrap}.monaco-editor .marker-widget>.stale{font-style:italic;opacity:.6}.monaco-editor .marker-widget .title{display:inline-block;padding-right:5px}.monaco-editor .marker-widget .descriptioncontainer{padding:8px 12px 0 20px;position:absolute;user-select:text;-webkit-user-select:text;white-space:pre}.monaco-editor .marker-widget .descriptioncontainer .message{display:flex;flex-direction:column}.monaco-editor .marker-widget .descriptioncontainer .message .details{padding-left:6px}.monaco-editor .marker-widget .descriptioncontainer .message .source,.monaco-editor .marker-widget .descriptioncontainer .message span.code{opacity:.6}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link{color:inherit;opacity:.6}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:before{content:"("}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:after{content:")"}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link>span{border-bottom:1px solid #0000;color:var(--vscode-textLink-foreground);color:var(--vscode-textLink-activeForeground);text-decoration:underline;text-underline-position:under}.monaco-editor .marker-widget .descriptioncontainer .filename{cursor:pointer}.extension-editor .codicon.codicon-error,.extensions-viewlet>.extensions .codicon.codicon-error,.markers-panel .marker-icon .codicon.codicon-error,.markers-panel .marker-icon.error,.monaco-editor .zone-widget .codicon.codicon-error,.preferences-editor .codicon.codicon-error,.text-search-provider-messages .providerMessage .codicon.codicon-error{color:var(--vscode-problemsErrorIcon-foreground)}.extension-editor .codicon.codicon-warning,.extensions-viewlet>.extensions .codicon.codicon-warning,.markers-panel .marker-icon .codicon.codicon-warning,.markers-panel .marker-icon.warning,.monaco-editor .zone-widget .codicon.codicon-warning,.preferences-editor .codicon.codicon-warning,.text-search-provider-messages .providerMessage .codicon.codicon-warning{color:var(--vscode-problemsWarningIcon-foreground)}.extension-editor .codicon.codicon-info,.extensions-viewlet>.extensions .codicon.codicon-info,.markers-panel .marker-icon .codicon.codicon-info,.markers-panel .marker-icon.info,.monaco-editor .zone-widget .codicon.codicon-info,.preferences-editor .codicon.codicon-info,.text-search-provider-messages .providerMessage .codicon.codicon-info{color:var(--vscode-problemsInfoIcon-foreground)}.monaco-editor .inlineSuggestionsHints.withBorder{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground);z-index:39}.monaco-editor .inlineSuggestionsHints a,.monaco-editor .inlineSuggestionsHints a:hover{color:var(--vscode-foreground)}.monaco-editor .inlineSuggestionsHints .keybinding{display:flex;margin-left:4px;opacity:.6}.monaco-editor .inlineSuggestionsHints .keybinding .monaco-keybinding-key{font-size:8px;padding:2px 3px}.monaco-editor .inlineSuggestionsHints .custom-actions .action-item:nth-child(2) a{display:flex;justify-content:center;min-width:19px}.monaco-editor .inlineSuggestionStatusBarItemLabel{margin-right:2px}.monaco-toolbar{height:100%}.monaco-toolbar .toolbar-toggle-more{display:inline-block;padding:0}.monaco-editor .hoverHighlight{background-color:var(--vscode-editor-hoverHighlightBackground)}.monaco-editor .monaco-hover{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);border-radius:3px;color:var(--vscode-editorHoverWidget-foreground)}.monaco-editor .monaco-hover a{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-hover a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .monaco-hover .hover-row .actions{background-color:var(--vscode-editorHoverWidget-statusBarBackground)}.monaco-editor .monaco-hover code{background-color:var(--vscode-textCodeBlock-background)}.monaco-editor .iPadShowKeyboard{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTQ4LjAzNiA0LjAxSDQuMDA4VjMyLjAzaDQ0LjAyOFY0LjAxWk00LjAwOC4wMDhBNC4wMDMgNC4wMDMgMCAwIDAgLjAwNSA0LjAxVjMyLjAzYTQuMDAzIDQuMDAzIDAgMCAwIDQuMDAzIDQuMDAyaDQ0LjAyOGE0LjAwMyA0LjAwMyAwIDAgMCA0LjAwMy00LjAwMlY0LjAxQTQuMDAzIDQuMDAzIDAgMCAwIDQ4LjAzNi4wMDhINC4wMDhaTTguMDEgOC4wMTNoNC4wMDN2NC4wMDNIOC4wMVY4LjAxM1ptMTIuMDA4IDBoLTQuMDAydjQuMDAzaDQuMDAyVjguMDEzWm00LjAwMyAwaDQuMDAydjQuMDAzaC00LjAwMlY4LjAxM1ptMTIuMDA4IDBoLTQuMDAzdjQuMDAzaDQuMDAzVjguMDEzWm00LjAwMiAwaDQuMDAzdjQuMDAzSDQwLjAzVjguMDEzWm0tMjQuMDE1IDguMDA1SDguMDF2NC4wMDNoOC4wMDZ2LTQuMDAzWm00LjAwMiAwaDQuMDAzdjQuMDAzaC00LjAwM3YtNC4wMDNabTEyLjAwOCAwaC00LjAwM3Y0LjAwM2g0LjAwM3YtNC4wMDNabTEyLjAwOCAwdjQuMDAzaC04LjAwNXYtNC4wMDNoOC4wMDVabS0zMi4wMjEgOC4wMDVIOC4wMXY0LjAwM2g0LjAwM3YtNC4wMDNabTQuMDAzIDBoMjAuMDEzdjQuMDAzSDE2LjAxNnYtNC4wMDNabTI4LjAxOCAwSDQwLjAzdjQuMDAzaDQuMDAzdi00LjAwM1oiIGZpbGw9IiM0MjQyNDIiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUzdjM2SDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+") 50% no-repeat;border:4px solid #f6f6f6;border-radius:4px;height:36px;margin:0;min-height:0;min-width:0;overflow:hidden;padding:0;position:absolute;resize:none;width:58px}.monaco-editor.vs-dark .iPadShowKeyboard{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTQ4LjAzNiA0LjAxSDQuMDA4VjMyLjAzaDQ0LjAyOFY0LjAxWk00LjAwOC4wMDhBNC4wMDMgNC4wMDMgMCAwIDAgLjAwNSA0LjAxVjMyLjAzYTQuMDAzIDQuMDAzIDAgMCAwIDQuMDAzIDQuMDAyaDQ0LjAyOGE0LjAwMyA0LjAwMyAwIDAgMCA0LjAwMy00LjAwMlY0LjAxQTQuMDAzIDQuMDAzIDAgMCAwIDQ4LjAzNi4wMDhINC4wMDhaTTguMDEgOC4wMTNoNC4wMDN2NC4wMDNIOC4wMVY4LjAxM1ptMTIuMDA4IDBoLTQuMDAydjQuMDAzaDQuMDAyVjguMDEzWm00LjAwMyAwaDQuMDAydjQuMDAzaC00LjAwMlY4LjAxM1ptMTIuMDA4IDBoLTQuMDAzdjQuMDAzaDQuMDAzVjguMDEzWm00LjAwMiAwaDQuMDAzdjQuMDAzSDQwLjAzVjguMDEzWm0tMjQuMDE1IDguMDA1SDguMDF2NC4wMDNoOC4wMDZ2LTQuMDAzWm00LjAwMiAwaDQuMDAzdjQuMDAzaC00LjAwM3YtNC4wMDNabTEyLjAwOCAwaC00LjAwM3Y0LjAwM2g0LjAwM3YtNC4wMDNabTEyLjAwOCAwdjQuMDAzaC04LjAwNXYtNC4wMDNoOC4wMDVabS0zMi4wMjEgOC4wMDVIOC4wMXY0LjAwM2g0LjAwM3YtNC4wMDNabTQuMDAzIDBoMjAuMDEzdjQuMDAzSDE2LjAxNnYtNC4wMDNabTI4LjAxOCAwSDQwLjAzdjQuMDAzaDQuMDAzdi00LjAwM1oiIGZpbGw9IiNDNUM1QzUiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUzdjM2SDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+") 50% no-repeat;border:4px solid #252526}.monaco-editor .suggest-preview-additional-widget{white-space:nowrap}.monaco-editor .suggest-preview-additional-widget .content-spacer{color:#0000;white-space:pre}.monaco-editor .suggest-preview-additional-widget .button{cursor:pointer;display:inline-block;text-decoration:underline;text-underline-position:under}.monaco-editor .ghost-text-hidden{font-size:0;opacity:0}.monaco-editor .ghost-text-decoration,.monaco-editor .suggest-preview-text .ghost-text{font-style:italic}.monaco-editor .inline-completion-text-to-replace{text-decoration:underline;text-underline-position:under}.monaco-editor .ghost-text-decoration,.monaco-editor .ghost-text-decoration-preview,.monaco-editor .suggest-preview-text .ghost-text{background-color:var(--vscode-editorGhostText-background);border:1px solid var(--vscode-editorGhostText-border);color:var(--vscode-editorGhostText-foreground)!important}.monaco-editor .snippet-placeholder{background-color:var(--vscode-editor-snippetTabstopHighlightBackground,#0000);min-width:2px;outline-color:var(--vscode-editor-snippetTabstopHighlightBorder,#0000);outline-style:solid;outline-width:1px}.monaco-editor .finish-snippet-placeholder{background-color:var(--vscode-editor-snippetFinalTabstopHighlightBackground,#0000);outline-color:var(--vscode-editor-snippetFinalTabstopHighlightBorder,#0000);outline-style:solid;outline-width:1px}.monaco-editor .suggest-widget{border-radius:3px;display:flex;flex-direction:column;width:430px;z-index:40}.monaco-editor .suggest-widget.message{align-items:center;flex-direction:row}.monaco-editor .suggest-details,.monaco-editor .suggest-widget{background-color:var(--vscode-editorSuggestWidget-background);border-color:var(--vscode-editorSuggestWidget-border);border-style:solid;border-width:1px;flex:0 1 auto;width:100%}.monaco-editor.hc-black .suggest-details,.monaco-editor.hc-black .suggest-widget,.monaco-editor.hc-light .suggest-details,.monaco-editor.hc-light .suggest-widget{border-width:2px}.monaco-editor .suggest-widget .suggest-status-bar{border-top:1px solid var(--vscode-editorSuggestWidget-border);box-sizing:border-box;display:none;flex-flow:row nowrap;font-size:80%;justify-content:space-between;overflow:hidden;padding:0 4px;width:100%}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar{display:flex}.monaco-editor .suggest-widget .suggest-status-bar .left{padding-right:8px}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-label{color:var(--vscode-editorSuggestWidgetStatus-foreground)}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label{margin-right:0}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label:after{content:", ";margin-right:.3em}.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore,.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget.with-status-bar:not(.docs-side) .monaco-list .monaco-list-row:hover>.contents>.main>.right.can-expand-details>.details-label{width:100%}.monaco-editor .suggest-widget>.message{padding-left:22px}.monaco-editor .suggest-widget>.tree{height:100%;width:100%}.monaco-editor .suggest-widget .monaco-list{user-select:none;-webkit-user-select:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row{background-position:2px 2px;background-repeat:no-repeat;-mox-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:flex;padding-right:10px;touch-action:none;white-space:nowrap}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused{color:var(--vscode-editorSuggestWidget-selectedForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused .codicon{color:var(--vscode-editorSuggestWidget-selectedIconForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents{flex:1;height:100%;overflow:hidden;padding-left:2px}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main{display:flex;justify-content:space-between;overflow:hidden;text-overflow:ellipsis;white-space:pre}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{display:flex}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.focused)>.contents>.main .monaco-icon-label{color:var(--vscode-editorSuggestWidget-foreground)}.monaco-editor .suggest-widget:not(.frozen) .monaco-highlighted-label .highlight{font-weight:700}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main .monaco-highlighted-label .highlight{color:var(--vscode-editorSuggestWidget-highlightForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused>.contents>.main .monaco-highlighted-label .highlight{color:var(--vscode-editorSuggestWidget-focusHighlightForeground)}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:before{color:inherit;cursor:pointer;font-size:14px;opacity:1}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close{position:absolute;right:2px;top:6px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close:hover,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:hover{opacity:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{opacity:.7}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.signature-label{opacity:.6;overflow:hidden;text-overflow:ellipsis}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.qualifier-label{align-self:center;font-size:85%;line-height:normal;margin-left:12px;opacity:.4;overflow:hidden;text-overflow:ellipsis}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{font-size:85%;margin-left:1.1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label>.monaco-tokenized-source{display:inline}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.right>.details-label,.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused:not(.string-label)>.contents>.main>.right>.details-label,.monaco-editor .suggest-widget:not(.shows-details) .monaco-list .monaco-list-row.focused>.contents>.main>.right>.details-label{display:inline}.monaco-editor .suggest-widget:not(.docs-side) .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right.can-expand-details>.details-label{width:calc(100% - 26px)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left{flex-grow:1;flex-shrink:1;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.monaco-icon-label{flex-shrink:0}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.left>.monaco-icon-label{max-width:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.left>.monaco-icon-label{flex-shrink:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{flex-shrink:4;max-width:70%;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:inline-block;height:18px;position:absolute;right:10px;visibility:hidden;width:18px}.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none!important}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore{display:inline-block}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right>.readMore{visibility:visible}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated{opacity:.66;text-decoration:unset}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated>.monaco-icon-label-container>.monaco-icon-name-container{text-decoration:line-through}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label:before{height:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon{background-position:50%;background-repeat:no-repeat;background-size:80%;display:block;height:16px;margin-left:2px;width:16px}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.hide{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon{align-items:center;display:flex;margin-right:4px}.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .icon,.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .suggest-icon:before{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.customcolor .colorspan{border:.1em solid #000;display:inline-block;height:.7em;margin:0 0 0 .3em;width:.7em}.monaco-editor .suggest-details-container{z-index:41}.monaco-editor .suggest-details{color:var(--vscode-editorSuggestWidget-foreground);cursor:default;display:flex;flex-direction:column}.monaco-editor .suggest-details.focused{border-color:var(--vscode-focusBorder)}.monaco-editor .suggest-details a{color:var(--vscode-textLink-foreground)}.monaco-editor .suggest-details a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .suggest-details code{background-color:var(--vscode-textCodeBlock-background)}.monaco-editor .suggest-details.no-docs{display:none}.monaco-editor .suggest-details>.monaco-scrollable-element{flex:1}.monaco-editor .suggest-details>.monaco-scrollable-element>.body{box-sizing:border-box;height:100%;width:100%}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type{flex:2;margin:0 24px 0 0;opacity:.7;overflow:hidden;padding:4px 0 12px 5px;text-overflow:ellipsis;white-space:pre}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type.auto-wrap{white-space:normal;word-break:break-all}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs{margin:0;padding:4px 5px;white-space:pre-wrap}.monaco-editor .suggest-details.no-type>.monaco-scrollable-element>.body>.docs{margin-right:24px;overflow:hidden}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs{min-height:calc(1rem + 8px);padding:0;white-space:normal}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div,.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>span:not(:empty){padding:4px 5px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:first-child{margin-top:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:last-child{margin-bottom:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .monaco-tokenized-source{white-space:pre}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs .code{word-wrap:break-word;white-space:pre-wrap}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .codicon{vertical-align:sub}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>p:empty{display:none}.monaco-editor .suggest-details code{border-radius:3px;padding:0 .4em}.monaco-editor .suggest-details ol,.monaco-editor .suggest-details ul{padding-left:20px}.monaco-editor .suggest-details p code{font-family:var(--monaco-monospace-font)}.monaco-editor .tokens-inspect-widget{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground);padding:10px;user-select:text;-webkit-user-select:text;z-index:50}.monaco-editor.hc-black .tokens-inspect-widget,.monaco-editor.hc-light .tokens-inspect-widget{border-width:2px}.monaco-editor .tokens-inspect-widget .tokens-inspect-separator{background-color:var(--vscode-editorHoverWidget-border);border:0;height:1px}.monaco-editor .tokens-inspect-widget .tm-token{font-family:var(--monaco-monospace-font)}.monaco-editor .tokens-inspect-widget .tm-token-length{float:right;font-size:60%;font-weight:400}.monaco-editor .tokens-inspect-widget .tm-metadata-table{width:100%}.monaco-editor .tokens-inspect-widget .tm-metadata-value{font-family:var(--monaco-monospace-font);text-align:right}.monaco-editor .tokens-inspect-widget .tm-token-type{font-family:var(--monaco-monospace-font)}.monaco-editor .linked-editing-decoration{background-color:var(--vscode-editor-linkedEditingBackground);min-width:1px}.monaco-editor .findOptionsWidget{background-color:var(--vscode-editorWidget-background);border:2px solid var(--vscode-contrastBorder);box-shadow:0 0 8px 2px var(--vscode-widget-shadow);color:var(--vscode-editorWidget-foreground)}.monaco-editor .find-widget{border-bottom-left-radius:4px;border-bottom-right-radius:4px;box-sizing:border-box;height:33px;line-height:19px;overflow:hidden;padding:0 4px;position:absolute;transform:translateY(calc(-100% - 10px));transition:transform .2s linear;z-index:35}.monaco-workbench.reduce-motion .monaco-editor .find-widget{transition:transform 0ms linear}.monaco-editor .find-widget textarea{margin:0}.monaco-editor .find-widget.hiddenEditor{display:none}.monaco-editor .find-widget.replaceToggled>.replace-part{display:flex}.monaco-editor .find-widget.visible{transform:translateY(0)}.monaco-editor .find-widget .monaco-inputbox.synthetic-focus{outline:1px solid -webkit-focus-ring-color;outline-offset:-1px}.monaco-editor .find-widget .monaco-inputbox .input{background-color:initial;min-height:0}.monaco-editor .find-widget .monaco-findInput .input{font-size:13px}.monaco-editor .find-widget>.find-part,.monaco-editor .find-widget>.replace-part{display:flex;font-size:12px;margin:3px 25px 0 17px}.monaco-editor .find-widget>.find-part .monaco-inputbox,.monaco-editor .find-widget>.replace-part .monaco-inputbox{min-height:25px}.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-right:22px}.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.mirror,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-bottom:2px;padding-top:2px}.monaco-editor .find-widget>.find-part .find-actions,.monaco-editor .find-widget>.replace-part .replace-actions{align-items:center;display:flex;height:25px}.monaco-editor .find-widget .monaco-findInput{display:flex;flex:1;vertical-align:middle}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element{width:100%}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element .scrollbar.vertical{opacity:0}.monaco-editor .find-widget .matchesCount{box-sizing:border-box;display:flex;flex:initial;height:25px;line-height:23px;margin:0 0 0 3px;padding:2px 0 0 2px;text-align:center;vertical-align:middle}.monaco-editor .find-widget .button{align-items:center;background-position:50%;background-repeat:no-repeat;border-radius:5px;cursor:pointer;display:flex;flex:initial;height:16px;justify-content:center;margin-left:3px;padding:3px;width:16px}.monaco-editor .find-widget .codicon-find-selection{border-radius:5px;height:22px;padding:3px;width:22px}.monaco-editor .find-widget .button.left{margin-left:0;margin-right:3px}.monaco-editor .find-widget .button.wide{padding:1px 6px;top:-1px;width:auto}.monaco-editor .find-widget .button.toggle{border-radius:0;box-sizing:border-box;height:100%;left:3px;position:absolute;top:0;width:18px}.monaco-editor .find-widget .button.toggle.disabled{display:none}.monaco-editor .find-widget .disabled{color:var(--vscode-disabledForeground);cursor:default}.monaco-editor .find-widget>.replace-part{display:none}.monaco-editor .find-widget>.replace-part>.monaco-findInput{display:flex;flex:auto;flex-grow:0;flex-shrink:0;position:relative;vertical-align:middle}.monaco-editor .find-widget>.replace-part>.monaco-findInput>.controls{position:absolute;right:2px;top:3px}.monaco-editor .find-widget.reduced-find-widget .matchesCount{display:none}.monaco-editor .find-widget.narrow-find-widget{max-width:257px!important}.monaco-editor .find-widget.collapsed-find-widget{max-width:170px!important}.monaco-editor .find-widget.collapsed-find-widget .button.next,.monaco-editor .find-widget.collapsed-find-widget .button.previous,.monaco-editor .find-widget.collapsed-find-widget .button.replace,.monaco-editor .find-widget.collapsed-find-widget .button.replace-all,.monaco-editor .find-widget.collapsed-find-widget>.find-part .monaco-findInput .controls{display:none}.monaco-editor .findMatch{animation-duration:0;animation-name:inherit!important}.monaco-editor .find-widget .monaco-sash{left:0!important}.monaco-editor.hc-black .find-widget .button:before{left:2px;position:relative;top:1px}.monaco-editor .find-widget>.button.codicon-widget-close{position:absolute;right:4px;top:5px}.monaco-editor .focused .selectionHighlight{background-color:var(--vscode-editor-selectionHighlightBackground);border:1px solid var(--vscode-editor-selectionHighlightBorder);box-sizing:border-box}.monaco-editor.hc-black .focused .selectionHighlight,.monaco-editor.hc-light .focused .selectionHighlight{border-style:dotted}.monaco-editor .wordHighlight{background-color:var(--vscode-editor-wordHighlightBackground);border:1px solid var(--vscode-editor-wordHighlightBorder);box-sizing:border-box}.monaco-editor.hc-black .wordHighlight,.monaco-editor.hc-light .wordHighlight{border-style:dotted}.monaco-editor .wordHighlightStrong{background-color:var(--vscode-editor-wordHighlightStrongBackground);border:1px solid var(--vscode-editor-wordHighlightStrongBorder);box-sizing:border-box}.monaco-editor.hc-black .wordHighlightStrong,.monaco-editor.hc-light .wordHighlightStrong{border-style:dotted}.monaco-editor .wordHighlightText{background-color:var(--vscode-editor-wordHighlightTextBackground);border:1px solid var(--vscode-editor-wordHighlightTextBorder);box-sizing:border-box}.monaco-editor.hc-black .wordHighlightText,.monaco-editor.hc-light .wordHighlightText{border-style:dotted}.monaco-editor .sticky-line{color:var(--vscode-editorLineNumber-foreground);display:inline-block;overflow:hidden;white-space:nowrap}.monaco-editor .sticky-line-number{float:left;text-align:right}.monaco-editor .sticky-line-root{background-color:inherit;overflow:hidden;white-space:nowrap;width:100%}.monaco-editor.hc-black .sticky-widget,.monaco-editor.hc-light .sticky-widget{border-bottom:1px solid var(--vscode-contrastBorder)}.monaco-editor .sticky-line-root:hover{background-color:var(--vscode-editorStickyScrollHover-background);cursor:pointer}.monaco-editor .sticky-widget{background-color:var(--vscode-editorStickyScroll-background);box-shadow:var(--vscode-scrollbar-shadow) 0 3px 2px -2px;width:100%;z-index:4}.monaco-editor .sticky-widget.peek{background-color:var(--vscode-peekViewEditorStickyScroll-background)}.monaco-editor .margin-view-overlays .codicon-folding-collapsed,.monaco-editor .margin-view-overlays .codicon-folding-expanded,.monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,.monaco-editor .margin-view-overlays .codicon-folding-manual-expanded{align-items:center;cursor:pointer;display:flex;font-size:140%;justify-content:center;margin-left:2px;opacity:0;transition:opacity .5s}.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-collapsed,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-expanded,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-expanded{transition:initial}.monaco-editor .margin-view-overlays .codicon.alwaysShowFoldIcons,.monaco-editor .margin-view-overlays .codicon.codicon-folding-collapsed,.monaco-editor .margin-view-overlays .codicon.codicon-folding-manual-collapsed,.monaco-editor .margin-view-overlays:hover .codicon{opacity:1}.monaco-editor .inline-folded:after{color:grey;content:"\22EF";cursor:pointer;display:inline;line-height:1em;margin:.1em .2em 0}.monaco-editor .folded-background{background-color:var(--vscode-editor-foldBackground)}.monaco-editor .cldr.codicon.codicon-folding-collapsed,.monaco-editor .cldr.codicon.codicon-folding-expanded,.monaco-editor .cldr.codicon.codicon-folding-manual-collapsed,.monaco-editor .cldr.codicon.codicon-folding-manual-expanded{color:var(--vscode-editorGutter-foldingControlForeground)!important}.monaco-editor .unicode-highlight{background-color:var(--vscode-editorUnicodeHighlight-background);border:1px solid var(--vscode-editorUnicodeHighlight-border);box-sizing:border-box}.editor-banner{background:var(--vscode-banner-background);box-sizing:border-box;cursor:default;display:flex;font-size:12px;height:26px;overflow:visible;width:100%}.editor-banner .icon-container{align-items:center;display:flex;flex-shrink:0;padding:0 6px 0 10px}.editor-banner .icon-container.custom-icon{background-position:50%;background-repeat:no-repeat;background-size:16px;margin:0 6px 0 10px;padding:0;width:16px}.editor-banner .message-container{align-items:center;display:flex;line-height:26px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.editor-banner .message-container p{margin-block-end:0;margin-block-start:0}.editor-banner .message-actions-container{flex-grow:1;flex-shrink:0;line-height:26px;margin:0 4px}.editor-banner .message-actions-container a.monaco-button{margin:2px 8px;padding:0 12px;width:inherit}.editor-banner .message-actions-container a{margin-left:12px;padding:3px;text-decoration:underline}.editor-banner .action-container{padding:0 10px 0 6px}.editor-banner{background-color:var(--vscode-banner-background)}.editor-banner,.editor-banner .action-container .codicon,.editor-banner .message-actions-container .monaco-link{color:var(--vscode-banner-foreground)}.editor-banner .icon-container .codicon{color:var(--vscode-banner-iconForeground)}.monaco-link{color:var(--vscode-textLink-foreground)}.monaco-link:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor{--monaco-monospace-font:"SF Mono",Monaco,Menlo,Consolas,"Ubuntu Mono","Liberation Mono","DejaVu Sans Mono","Courier New",monospace;font-family:-apple-system,BlinkMacSystemFont,Segoe WPC,Segoe UI,HelveticaNeue-Light,system-ui,Ubuntu,Droid Sans,sans-serif}.monaco-editor.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.hc-light .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-menu .monaco-action-bar.vertical .action-item .action-menu-item:focus .action-label{stroke-width:1.2px}.monaco-hover p{margin:0}.monaco-aria-container{clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute!important;top:0;width:1px}.monaco-diff-editor .diffOverview{z-index:9}.monaco-diff-editor .diffOverview .diffViewport{z-index:10}.monaco-diff-editor.vs .diffOverview{background:#00000008}.monaco-diff-editor.vs-dark .diffOverview{background:#ffffff03}.monaco-scrollable-element.modified-in-monaco-diff-editor.vs .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.vs-dark .scrollbar{background:#0000}.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-black .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-light .scrollbar{background:none}.monaco-scrollable-element.modified-in-monaco-diff-editor .slider{z-index:10}.modified-in-monaco-diff-editor .slider.active{background:#ababab66}.modified-in-monaco-diff-editor.hc-black .slider.active,.modified-in-monaco-diff-editor.hc-light .slider.active{background:none}.monaco-diff-editor .delete-sign,.monaco-diff-editor .insert-sign,.monaco-editor .delete-sign,.monaco-editor .insert-sign{align-items:center;display:flex!important;font-size:11px!important;opacity:.7!important}.monaco-diff-editor.hc-black .delete-sign,.monaco-diff-editor.hc-black .insert-sign,.monaco-diff-editor.hc-light .delete-sign,.monaco-diff-editor.hc-light .insert-sign,.monaco-editor.hc-black .delete-sign,.monaco-editor.hc-black .insert-sign,.monaco-editor.hc-light .delete-sign,.monaco-editor.hc-light .insert-sign{opacity:1}.monaco-editor .inline-added-margin-view-zone,.monaco-editor .inline-deleted-margin-view-zone{text-align:right}.monaco-editor .arrow-revert-change{position:absolute;z-index:10}.monaco-editor .arrow-revert-change:hover{cursor:pointer}.monaco-editor .view-zones .view-lines .view-line span{display:inline-block}.monaco-editor .margin-view-zones .lightbulb-glyph:hover{cursor:pointer}.monaco-diff-editor .char-insert,.monaco-editor .char-insert{background-color:var(--vscode-diffEditor-insertedTextBackground)}.monaco-diff-editor .line-insert,.monaco-editor .line-insert{background-color:var(--vscode-diffEditor-insertedLineBackground,--vscode-diffEditor-insertedTextBackground)}.monaco-editor .char-insert,.monaco-editor .line-insert{border:1px solid var(--vscode-diffEditor-insertedTextBorder);box-sizing:border-box}.monaco-editor.hc-black .char-insert,.monaco-editor.hc-black .line-insert,.monaco-editor.hc-light .char-insert,.monaco-editor.hc-light .line-insert{border-style:dashed}.monaco-editor .char-delete,.monaco-editor .line-delete{border:1px solid var(--vscode-diffEditor-removedTextBorder);box-sizing:border-box}.monaco-editor.hc-black .char-delete,.monaco-editor.hc-black .line-delete,.monaco-editor.hc-light .char-delete,.monaco-editor.hc-light .line-delete{border-style:dashed}.monaco-diff-editor .gutter-insert,.monaco-editor .gutter-insert,.monaco-editor .inline-added-margin-view-zone{background-color:var(--vscode-diffEditorGutter-insertedLineBackground,--vscode-diffEditor-insertedLineBackground,--vscode-diffEditor-insertedTextBackground)}.monaco-diff-editor .char-delete,.monaco-editor .char-delete{background-color:var(--vscode-diffEditor-removedTextBackground)}.monaco-diff-editor .line-delete,.monaco-editor .line-delete{background-color:var(--vscode-diffEditor-removedLineBackground,--vscode-diffEditor-removedTextBackground)}.monaco-diff-editor .gutter-delete,.monaco-editor .gutter-delete,.monaco-editor .inline-deleted-margin-view-zone{background-color:var(--vscode-diffEditorGutter-removedLineBackground,--vscode-diffEditor-removedLineBackground,--vscode-diffEditor-removedTextBackground)}.monaco-diff-editor.side-by-side .editor.modified{border-left:1px solid var(--vscode-diffEditor-border);box-shadow:-6px 0 5px -5px var(--vscode-scrollbar-shadow)}.monaco-diff-editor .diffViewport{background:var(--vscode-scrollbarSlider-background)}.monaco-diff-editor .diffViewport:hover{background:var(--vscode-scrollbarSlider-hoverBackground)}.monaco-diff-editor .diffViewport:active{background:var(--vscode-scrollbarSlider-activeBackground)}.monaco-diff-editor .diff-review-line-number{color:var(--vscode-editorLineNumber-foreground);display:inline-block;text-align:right}.monaco-diff-editor .diff-review{position:absolute;user-select:none;-webkit-user-select:none;z-index:99}.monaco-diff-editor .diff-review-summary{padding-left:10px}.monaco-diff-editor .diff-review-shadow{box-shadow:var(--vscode-scrollbar-shadow) 0 -6px 6px -6px inset;position:absolute}.monaco-diff-editor .diff-review-row{white-space:pre}.monaco-diff-editor .diff-review-table{display:table;min-width:100%}.monaco-diff-editor .diff-review-row{display:table-row;width:100%}.monaco-diff-editor .diff-review-spacer{display:inline-block;vertical-align:middle;width:10px}.monaco-diff-editor .diff-review-spacer>.codicon{font-size:9px!important}.monaco-diff-editor .diff-review-actions{display:inline-block;position:absolute;right:10px;top:2px;z-index:100}.monaco-diff-editor .diff-review-actions .action-label{height:16px;margin:2px 0;width:16px}.context-view{position:absolute}.context-view.fixed{all:initial;color:inherit;font-family:inherit;font-size:13px;position:fixed}.quick-input-widget{font-size:13px}.quick-input-widget .monaco-highlighted-label .highlight{color:#0066bf}.vs .quick-input-widget .monaco-list-row.focused .monaco-highlighted-label .highlight{color:#9dddff}.vs-dark .quick-input-widget .monaco-highlighted-label .highlight{color:#0097fb}.hc-black .quick-input-widget .monaco-highlighted-label .highlight{color:#f38518}.hc-light .quick-input-widget .monaco-highlighted-label .highlight{color:#0f4a85}.monaco-keybinding>.monaco-keybinding-key{background-color:#ddd6;border:1px solid;border-color:#ccc6 #ccc6 #bbb6;box-shadow:inset 0 -1px 0 #bbb6;color:#555}.hc-black .monaco-keybinding>.monaco-keybinding-key{background-color:initial;border:1px solid #6fc3df;box-shadow:none;color:#fff}.hc-light .monaco-keybinding>.monaco-keybinding-key{background-color:initial;border:1px solid #0f4a85;box-shadow:none;color:#292929}.vs-dark .monaco-keybinding>.monaco-keybinding-key{background-color:#8080802b;border:1px solid;border-color:#3339 #3339 #4449;box-shadow:inset 0 -1px 0 #4449;color:#ccc}.monaco-progress-container{height:5px;overflow:hidden;width:100%}.monaco-progress-container .progress-bit{display:none;height:5px;left:0;position:absolute;width:2%}.monaco-progress-container.active .progress-bit{display:inherit}.monaco-progress-container.discrete .progress-bit{left:0;transition:width .1s linear}.monaco-progress-container.discrete.done .progress-bit{width:100%}.monaco-progress-container.infinite .progress-bit{animation-duration:4s;animation-iteration-count:infinite;animation-name:progress;animation-timing-function:linear;transform:translateZ(0)}.monaco-progress-container.infinite.infinite-long-running .progress-bit{animation-timing-function:steps(100)}@keyframes progress{0%{transform:translateX(0) scaleX(1)}50%{transform:translateX(2500%) scaleX(3)}to{transform:translateX(4900%) scaleX(1)}}.quick-input-widget{-webkit-app-region:no-drag;border-radius:6px;left:50%;margin-left:-300px;position:absolute;width:600px;z-index:2550}.quick-input-titlebar{align-items:center;border-top-left-radius:5px;border-top-right-radius:5px;display:flex}.quick-input-left-action-bar{display:flex;flex:1;margin-left:4px}.quick-input-title{overflow:hidden;padding:3px 0;text-align:center;text-overflow:ellipsis}.quick-input-right-action-bar{display:flex;flex:1;margin-right:4px}.quick-input-right-action-bar>.actions-container{justify-content:flex-end}.quick-input-titlebar .monaco-action-bar .action-label.codicon{background-position:50%;background-repeat:no-repeat;padding:2px}.quick-input-description{margin:6px 6px 6px 11px}.quick-input-header .quick-input-description{flex:1;margin:4px 2px}.quick-input-header{display:flex;padding:8px 6px 6px}.quick-input-widget.hidden-input .quick-input-header{margin-bottom:0;padding:0}.quick-input-and-message{display:flex;flex-direction:column;flex-grow:1;min-width:0;position:relative}.quick-input-check-all{align-self:center;margin:0}.quick-input-filter{display:flex;flex-grow:1;position:relative}.quick-input-box{flex-grow:1}.quick-input-widget.show-checkboxes .quick-input-box,.quick-input-widget.show-checkboxes .quick-input-message{margin-left:5px}.quick-input-visible-count{left:-10000px;position:absolute}.quick-input-count{align-items:center;align-self:center;display:flex;position:absolute;right:4px}.quick-input-count .monaco-count-badge{border-radius:2px;line-height:normal;min-height:auto;padding:2px 4px;vertical-align:middle}.quick-input-action{margin-left:6px}.quick-input-action .monaco-text-button{align-items:center;display:flex;font-size:11px;height:25px;padding:0 6px}.quick-input-message{margin-top:-1px;overflow-wrap:break-word;padding:5px}.quick-input-message>.codicon{margin:0 .2em;vertical-align:text-bottom}.quick-input-message a{color:inherit}.quick-input-progress.monaco-progress-container{position:relative}.quick-input-progress.monaco-progress-container,.quick-input-progress.monaco-progress-container .progress-bit{height:2px}.quick-input-list{line-height:22px}.quick-input-widget.hidden-input .quick-input-list{margin-top:4px;padding-bottom:4px}.quick-input-list .monaco-list{max-height:440px;overflow:hidden;padding-bottom:5px}.quick-input-list .monaco-scrollable-element{padding:0 5px}.quick-input-list .quick-input-list-entry{box-sizing:border-box;display:flex;height:100%;overflow:hidden;padding:0 6px}.quick-input-list .quick-input-list-entry.quick-input-list-separator-border{border-top-style:solid;border-top-width:1px}.quick-input-list .monaco-list-row{border-radius:3px}.quick-input-list .monaco-list-row[data-index="0"] .quick-input-list-entry.quick-input-list-separator-border{border-top-style:none}.quick-input-list .quick-input-list-label{display:flex;flex:1;height:100%;overflow:hidden}.quick-input-list .quick-input-list-checkbox{align-self:center;margin:0}.quick-input-list .quick-input-list-icon{align-items:center;background-position:0;background-repeat:no-repeat;background-size:16px;display:flex;height:22px;justify-content:center;padding-right:6px;width:16px}.quick-input-list .quick-input-list-rows{display:flex;flex:1;flex-direction:column;height:100%;margin-left:5px;overflow:hidden;text-overflow:ellipsis}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-rows{margin-left:10px}.quick-input-widget .quick-input-list .quick-input-list-checkbox{display:none}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-checkbox{display:inline}.quick-input-list .quick-input-list-rows>.quick-input-list-row{align-items:center;display:flex}.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label,.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label .monaco-icon-label-container>.monaco-icon-name-container{flex:1}.quick-input-list .quick-input-list-rows>.quick-input-list-row .codicon[class*=codicon-]{vertical-align:text-bottom}.quick-input-list .quick-input-list-rows .monaco-highlighted-label>span{opacity:1}.quick-input-list .quick-input-list-entry .quick-input-list-entry-keybinding{margin-right:8px}.quick-input-list .quick-input-list-label-meta{line-height:normal;opacity:.7;overflow:hidden;text-overflow:ellipsis}.quick-input-list .monaco-highlighted-label .highlight{font-weight:700}.quick-input-list .quick-input-list-entry .quick-input-list-separator{margin-right:4px}.quick-input-list .quick-input-list-entry-action-bar{display:flex;flex:0;overflow:visible}.quick-input-list .quick-input-list-entry-action-bar .action-label{display:none}.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon{margin-right:4px;padding:0 2px 2px}.quick-input-list .quick-input-list-entry-action-bar{margin-right:4px;margin-top:1px}.quick-input-list .monaco-list-row.focused .quick-input-list-entry-action-bar .action-label,.quick-input-list .quick-input-list-entry .quick-input-list-entry-action-bar .action-label.always-visible,.quick-input-list .quick-input-list-entry:hover .quick-input-list-entry-action-bar .action-label{display:flex}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key,.quick-input-list .monaco-list-row.focused .quick-input-list-entry .quick-input-list-separator{color:inherit}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key{background:none}.monaco-editor .diff-hidden-lines-widget{width:100%}.monaco-editor .diff-hidden-lines{font-size:13px;height:0;line-height:14px;transform:translateY(-10px)}.diff-hidden-lines .bottom.dragging,.diff-hidden-lines .top.dragging,.diff-hidden-lines:not(.dragging) .bottom:hover,.monaco-editor .diff-hidden-lines:not(.dragging) .top:hover{background-color:var(--vscode-focusBorder)}.diff-hidden-lines .bottom,.monaco-editor .diff-hidden-lines .top{background-clip:padding-box;background-color:initial;border-bottom:2px solid #0000;border-top:4px solid #0000;cursor:ns-resize;height:4px;transition:background-color .1s ease-out}.monaco-editor .diff-hidden-lines .top{transform:translateY(4px)}.monaco-editor .diff-hidden-lines .bottom{transform:translateY(-6px)}.monaco-editor .diff-unchanged-lines{background:var(--vscode-diffEditor-unchangedCodeBackground)}.monaco-editor .noModificationsOverlay{align-items:center;background:var(--vscode-editor-background);display:flex;justify-content:center;z-index:1}.monaco-editor .diff-hidden-lines .center{background:var(--vscode-diffEditor-unchangedRegionBackground);color:var(--vscode-diffEditor-unchangedRegionForeground);display:block;height:24px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-editor .diff-hidden-lines .center span.codicon{vertical-align:middle}.monaco-editor .diff-hidden-lines .center a:hover .codicon{color:var(--vscode-editorLink-activeForeground)!important;cursor:pointer}.monaco-editor .movedModified,.monaco-editor .movedOriginal{border:2px solid var(--vscode-diffEditor-move-border)}.monaco-diff-editor .moved-blocks-lines{pointer-events:none;position:absolute}.monaco-diff-editor .moved-blocks-lines path{fill:none;stroke:var(--vscode-diffEditor-move-border);stroke-width:2}.monaco-editor .char-delete.diff-range-empty{border-left:3px solid var(--vscode-diffEditor-removedTextBackground);margin-left:-1px}.monaco-editor .char-insert.diff-range-empty{border-left:3px solid var(--vscode-diffEditor-insertedTextBackground)}.monaco-editor .fold-unchanged{cursor:pointer}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(../fonts/roboto-mono-cyrillic-ext-400-normal.13c026e0.woff2) format("woff2"),url(../fonts/roboto-mono-cyrillic-ext-400-normal.9a2551a4.woff) format("woff");unicode-range:u+0460-052f,u+1c80-1c88,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,d09GRgABAAAAACIYAA0AAAAAMZAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABMAAAADYAAAA2kw2CBE9TLzIAAAFoAAAAUAAAAGB5d/KNU1RBVAAAAbgAAAA9AAAASOdwzC5jbWFwAAAB+AAAAMkAAAEMH5BNQ2dhc3AAAALEAAAACAAAAAgAAAAQZ2x5ZgAAAswAABuyAAApfmB6OwpoZWFkAAAegAAAADYAAAA2ATWcDmhoZWEAAB64AAAAHwAAACQKsQEqaG10eAAAHtgAAADMAAABDie6IPlsb2NhAAAfpAAAAQ4AAAEOUCFFgW1heHAAACC0AAAAHAAAACAApQE6bmFtZQAAINAAAAEvAAAChD6DX4Zwb3N0AAAiAAAAABYAAAAg/20AZQABAAAACgAkACYABERGTFQAHmN5cmwAImdyZWsAImxhdG4AIgAAAAAACAAAAAAAAAAA//8AAAAAeNpjYGE5yziBgZWBgXUWqzEDA6M8hGa+yJDGxAAGnAxQwOQAJDhgPHd/f3cGB2ZGRTGOpL9XgRJJTNoKDIzz/RkZGFisWDcAlQC5ABMlC2d42g3HgQWAUBgGwPv+QkREI7RYoCLAozUaqOHqgBMxKCwKq7r3owVn266MorfoUJnyUC86+T+D8AHSMAVPAAAAeNpiYGBgAmJmIBYBkoxgmoXhB5gWAIqwMDOyqLLos7iy+LPEs0xk2ago9v8/AwNQlIFFjcWAxY0lgGUCywaQ6F9pBoY/7AwMv/8D8dHfV+47gs0TAuIoIG5igIEGQEHwkNgAAAAALE+ZfZ+987zVtm23H28iZEfYroiomLg9+w4kraQcSjuSkXUs58SpM3kJ5wqKSsoqqmou1DU0Xbpy7UbLrTv32h48evKs40VXz6u+NwNrQx9GPo1NTM18+fZjbmPhdwvbGy4ZAAAAAAEAAf//AA942pxaBWATedbPf2bSYJVom6SNJxNv0omn8aRuuFaAKlrBYV3u41iBNVyKrcAuXYVh3V3OVs7d3Y82w/cmg6TscZ+kkZG/PH+/96Y8jDeTxyN28sd4At40Hg+JKaRHlNgvFuM9I+eYqv2MlV5f9foraDPzFf7YhTa0eRTblP0vHs47DfO6YJ6SZ+UFeTxK6/P5fT7SYyJNJtLLnsA7d6IVa2WyUplMICkQFBQItEIhlTuXcuen0dfbz6RSbYjUa3v93ka1So9QWyp1ehHTeh6R4V6TyYYqzeb+EPOTrK/PTFa6SLLbgwJez4HexKDDki7ESz0mY0ew977KSgea+Bdm0Oq6opEurdaIsJPoY6RQls+LBOdVqNSIh3grL/6WaOe/wYsBv/oClga9jiUU3l6vhyPcR1WxJJZSuct6HYzKvaVwLfemqthRRDs91W40rqxPdRuNruLiwsLiYrfR0JOsX2k02qfSMxqj0dOrF98XDM1WlisRgq/ZoeD9iwZOxaIt6LnkkMXqtJmMywL+Ed+HvhG/f5nRaHPbbMPJ/tPRSIpyOLbW1R2a+f7MQ3V1WxwOKhWpfhQ4eA5k7wHZTwcOvFqh9tIH/zh7BHthYgd+YzaMjR5E3zx0oe0gRvBgxt0wI8bN0Ar1QvZDwTcRO5M99cQT2Fz+WPYebPhCGzaa7WTHPwHjVdx4sRRWl3J7PIHmMqfwQeYYauePjY7vOnKEWDvKjl8GMpWx1gAnwnyZ6vOk5RfiCzHSYOxPxvuAT/yFqQ3RyMO9PadisXqMPzYxPbrWanVbSVN/pOdYMBTNRCOP9eB/gyVz1nYc1p8BJ4hCYKSCHAvYdHTuR9kfoeyPmLl3v/gidjy7BKewG7K/GsPeBmv9LTv3AZjbBHOL4ISdg4OR4/ALZrb5Z88U/2MFKix+5ucXeax9YxmsMcvHS7JHss+DTMw88JAVwNtSsBcjr5GVNzD1n40C3qQULueLgfOJfNOCN7EUyRXKmYHAfYsW7QoEZiqUcgS2qpgVCOy6dEUhfw5NLyqu1BuWJxLLDAbWxhDQW+QyGJbFuStFM7DbT7YcaWi4xeXy+13uWxoaDrecbDl0+YLrZrjw90c8w/5Aj4l0OklTb8A/TD1CDQX8PaTJ6TCRPf7AEHD6MkhqM0iqhKcGTjmP9nIerQWBCbX5fos2IfWyM8lkc3MyeWYZY6aROr7aTDocZvOqOFaHQn7/6MDAUb8/hIFcf4gFkNloXJFM9hkMJGL10gS73c5GnpwVS9kdiNvH30GvPcMXHTp04fd8ETtqPoy6l7NEVu2I4vSPDTHvfYEeZlq+g1Io+TnTih7+Nr4eC2edWR1Wkz2PfR/7OnB0AHTnI1p4Xl49WD4FyvMKPXnaozxXNSKVchelkjxdymTGnAa93ECKUyy+/lWRJBkMHVrSc9gfCKPzWpVqvj/cqdUa3hs6m0jUet2uHfO8HVZLphwvZN7wzVIqlWqV9d6u0yUBE9lR4tjsQ/9Y/F9OhyPgcA6HdbHS0nKVsrzFPddud9y5ML3eaquSicVV5brYpnJ5WdpsTZbptN/RhGEca5NfAb4ywJeO5+Lx+EAqecXUvFpvHodSjhvxJQ45nWJ3HfrMN0TtW964zW5zC3B+MBQ6s779yUzNnKZ0+uVFtX06nSl7frrfbO6W3DRrQbIt4HZuahXMHnqtrnZmU23dx7dZh16pqWnB3/NYrSNVUxtHzKSFpet90NZc/uu8qTxlfuTAJaw88+l6Hw0yO/GvMoe/5g/4AyUlhWaFwlJYUkyERrOCI0fwfajcUV3tkFuLCsHki62w9jeYRnwBrF3Bg60QrC3JczBBngN6r+4HmyEbGiB1uiWeIrdC6REWyp2l5SF190G/L/gNXyD38sGuE13NAxqNEmGIj+8hBBiGBf2+I/1EAlU4IhGHIxZj+dsCcp8FcpfzKJY/Sd6m+dyVeifZVR6hW9Lx2NmR4efisXQ6FmePYvE0DXeGm5tHyBwrI03N6+AAI2Xr32lomDOnoeGd9bL17zY0zJ3b0PDuDlnrLr8/kfD7d7XK2uAwHodDlrbHmS4iBrRV8PxAGyWUXYc4AalH+SSRwryw9DgtcSpsK6O9h30gHB9IINxnVXlkUx/FvtAbDIPNrlZNuV0ortJU1NtaBo0GPdOFTZEZi8sUc4C6ddLN79fXz5KXlTjKN2R/K23dCbSWSUUeFTZVFxCLJXGf/17w6jOcX7JeifJJ0edJlKOZe0+SJ5Vv37kJ3Bu/QSJWr2mo7CLNXoKOVYdPr+k6Ggolgj7foe6m5RWqMpWqYmE4uFijMdCRQOBId/v+QCBa7fftbW/qVasVSK1witV6SVlZSzBzs8sddlqtG+pSvaTJLy3WSCRVGnVIJlNoFIqUvnar0+mpstlGkqkeo8knLjbKZF7gbA14wDAR+lK8Ws38+FN0P7Psc7BH26fMMnT/F9ijaFf2V9nvoQNMN6bHSmF2mmkk7oDZbB7lAhCb6kj4uppOwNQRv37Qag2LMePHzK8oF/PZx+jrDdP0ZfKYqcgtV4lqmEaf2dxhJX6UTd50G3Z+/F87JdGKCiuO7SZyKfQw8TLu4L/Lw+EE14txx5kf/JN4GU1j/s7e3Qd3qy7fpRA269xdaAb/XebvaBrcDRMP47v4T/HkbD7NU543X3n4rodEIpGfNAfg5yEbSa7JpNeQpJX/lMovAQFLJH5VeLleT5J6/XKwXqQm/og/wn8T5FYK6+b5Lz/fl9V+ziz96InLR/zFbKAAH620RyJ2RzQK07k4BHKcmh+FrsScK0GGh7L9xAvMQwWll3gVZ39967rzBaXMCbSYXedZWMcF2YfPIS3IUK6JO87zy/ZcaOOXwf2jcN/K5TDYhcNU1olNNAZgiB1y4Zc8WDkDowA+g2daWd9EXr20IM94pZQ3L9UiD4eVcnZv5HIt58vY6/SyE5FIOh2JnFhGLz0Rqc5kqiMnsp8b9LruRKJbpzdg3zDo9Mvj8eV6nYH48UcfCWZnMi+sHXwhk5kleOMNwZyazPODa8/DWfZfrbe73WFBVlQQdrvumNV2B3uG/V4QdrlvYzm3XvwbsQ1oNl3Nzv7L0IVTeuklL3VirCsKicj479Dic9UqTaxTQxqRrEw+M4QtvtftD1Sve3SVOqICse258EvsDIHpNKYNjdVLdTrjLpeTOtS/4tSGOIGht2HfWyAyrAQ78F+Dzr1eLZvZroPNpcI82yNW0tNsRtPqxtaNZosFMMGbFot5Y2vjasDk0+hpddHY2PD65xPJmppk4vn1w2OxaB062zxiIslUODzauWBPY8doOJSyms0bGtc8Xl0dm9/S8u3bmLdv+6KldX4qEnmUjbYq0OlBkI+TF2GxEs4piiNYL+UI4d5eMZhFXkTL3eaAFDca+032Axxe0wQC4fRCnUSmCSzUKcxFhUI+QaA3kWTOLTab3W6z3TJn8WJbRCwWCkXiiH0xANQ5mW2+SL/FFJbIFbuddt2yas/mTOCGFCa58Mt0dfhoR8fR6nBmT5XF0u/zD1isFFAO6iV2AOVlPBLqNkoIf5OoE+b+0GQabzt34VeLtzsdTnhvX+w+d+EctsJNZaRSsUgqy1ButnBIBIP7Fy3aE/BHsYHsdmzjxEW7wdBBUZ1GowM0m4J9+1kvuGpRV0I6HHO7m1hLik/gaBGt8JVHFqoqyumQz3dwOZxdsp8XcVypUnWmGT96d8Uet9uJQEpv8FhvZPYS1ktVyyVv1MPnKFpFo+V09tesTzJ7UR/8/oIvZ7V49FJtIOJpc1RNVpQWIG++FLRExcQd6I11z0ajiUQ0+uw6NiK2DBmNer3RONTC/D0XGGLB4JGupQcC/mr0cvYxm8G4PBDsI0knu18NULgJ9pPk9hMDdThnNfDWi1mCkRiIuGw6RK/opuxGDTZVMEVaKK9xJpQHsVeZJhlSM3GFtaRYKiAKmP1ogi/Pnm28PZgcci4YUjEY6mP2Ex+gJ8dvqtxQE93V5uyGzVi5E0/A3lKuzhfr8ZyiIfwjSsyaATb+0c+YP//y88ejZzNPfPZz5i8//zB6FtuRXY99gX2WHcHuzn3IrCV3bQe75sKLvyEGoTaaBRL/curm2MjP1pPw9hWXuewQ7MX8hLJwUV3d2c6RNwB0upya2RSZUlb5UEMq/eLI8qdS6VbabbEMxmZtsVgsWq2oslzT7Dh7llpoMIWkUqnL4bxlZt0mm82FHlg76vG4A37f4b7mLU61Syi0yZ3rU70HPB5PgPI82O5botMazXp9h98zXy1STps+He0pLCy0qCqaXdXdBoPZZjR2B/PiPeQVxKqPQjgUlEPZXyGaxkoRzR8b/4RwXWgj3OMfwzCYUQkzbHCo4qLE9UIEWCthm/gNgeN8mVCWrjRTwQ6TPSEtFvEBiqITsPLEP90LzY2bbIHgblWFYW2T/7YGbcaADbI5BvFsoIlnuQrcD2q4HnjoUwykZ28E7FCKlX7G/LCulvngE/Rna6FBoahxkosURdPLrAZDp4d4JRt++mWMHn9tbnlAJlOKBLDHSWaUeCbPv8T6nH+dxOedFN1PZ/+R869RNM6XcP6FeKeAexJm5LCC8IpiYdoVawHGSbpu5+zgHOiO0H6PZ8/Szu0p4DebKauo0OuG5qJ3mMDmx3w+t7Ise4Jd9QZYtY2jA7EEXA5ZPhr/xrlvnfsWSwfn4xd+kRsPdD8G44vZ8Rzh+XM2nBAtujwNyP8HpG1uKsar4ipiLj7kkMTkUCmcHCWrkBvVrz0dDkUiofDptTt31vfrtGq1VtdfDz02CF7xUPBwZxfEhgg2PysCq1ruD0BsqGRRwk7YqzFXfUt4eraPop+8G3vhmqiM6mkk7dxV5a6C965O7CSdPbvE3ywvk8kAw/qXQL9l/oW23KadB2HTiYdzTY7XoGe1zB/oJc2VwOMjsO/MK1X/tbvyJ0dAtJRGr18/ALIb5kfA3XnhD/GGIbfPvpzb88qTa2pyX37tBIkiPyYgG41SsejYmvUvpVL19anUS+vXjEVjKUQj0mhcXdu6xWq1M+Xopw6rdUtLLaR8En1tzdOxeGZOc9Ont6Gm2z5rbprTlEw+1dN0g93migeDhzvady/qOBQMxl1221Y2Sm8EOldAVNPywqxEJpXTrNVAsJTmY938ShR4uUo+scLphHQ571ab3TZM08OQxG+dt2g7XKTFUmmmyhkVi0tKxOKowxaXlssxHD1609uZTF1dJvP2TXuwA6CrG7bc9HaavZJ+G7Myczvvqcy97ulEpzruhgO9zrmPpTkBWjSBFsU8HWBRyCT55RGikBZxdFFCjk58Nc20rH8xmaqlqvQdIebUm2C7vuxrVotlc9u/LrZsMpst/LGA13ewe9btlD4oza7BOtGZCCBLY/aHVpOxF3bNobXaAiH0V1pBUpz+fHlxjasPrryl/6ZiFkwukvPasNidgV6Ho0VTnHS5ttQsX+2ggntMWt1i79pnYxDEReJkNPrM8PDTYIyRUOjk3U1giAaD0bi2qXnIwB4ZBvEJuaw0Zlxym8PhLZaqVLrhdotXKCqdJh3pqhxM1JzoWD70Sm1tW1tt7StDpQNPJxONe/zOyi3p0qbtlCcS8VDbm0rTWyqdftZDj7PVABG62vPOT3akLx85iCe7zTWB4jj6fedeny9UrlQ2Vk1ReyQGYywUPt7NzD+PPIF5FeUVCjlUqswHf4gs1ej0MolmVSOsO9Jsb9NqKguxGSqxZq67edBgMGRHYdFqEhBgaRn6NvKKxOJqi9otKlewke8sm6+IUF79Yp24+zw+unf8LXwU9OdjXiP2wX1hLm9wCIS6CkuQ/zIYOdArOon95WHRjmxtiaBULA6jwFTUwtSUaadPL97N2FCUeQ19Cz/GrFj3Qjrdigl+k51iH0wl97BUCIGK00ToMvJAV5AHuow8/vbZD5lP0ZRPXwrT4Rc/RQXMZz/4LEyjTxkrRmECJo5eYT/Zf2U/ZK+hT2Eh6IH9jmggmv8T9vBet9d3JRFfD3t8pTFc88Ky7tPxeL1eW95YqQ3JzPZkdfXJ7s5T8UQzoivNZH8Iii6tXiEXVVaUBjR/+pM6JJfbRQaTxWhaEU8MWixOFJ+51eyGPoJlU4tnrlZpKSrUinVzXC3rzaTZbrFubDTGSmUKhay0WqfziQslBXz+AYLPL5omTTiN8bIypVqpyJAsvyfYXMrVtAixUQixzew12T+cO4cJaSI08SNcDWpVTfwYBvFQzlofJEJ5PXMudmGF6OBvmBnokx8xq4/QNPqQoTA3NpXxoffG30Ifwkw/G0tYO5+MWQQCkHA+YDFNXMQAsJRMlzUGLbhvxT1WhW4Kn4/QPeeJEOOuWki6Z6qDQXRidqv75iZnnx/5Jjph/e2wvoWjzIizJIkpMXzrsSU//QP97Zu/Sf/ib3hm/C3s6Wwztj/bQ4TyuL/2CQZJZ/8I2KsENrShbwEDHzFV+dLKr8zJiRtzI1njB0JgVD+M2gqj8nvQW6GOffQ8fvyhhyaW4MdZv98CnbVZBTzIjw5e+Erfr5QtYPICGQkkFVzu/uWV8NL8Gn6Lz0M90E53POih/D6P58EOuv0BMExaqVS0eX1t0P3HeqFXPNPnmwk/0APsP1tb21nCrEQPFHfW1Z4dkPWfq6vtKkHnmRphZ23duRtlya0U1Sia+LWogaK2LpSlt1FUgwgvY0+3sTw+xrxM7CRC16K2x3DnSdEt55kiVh7My+hz/NhEO36Me1rEya6ckzUQ/++RGwhfFVFbFzgT3Rqlio6Ggke75+5KE6HsrwQziIICnUG9JIrCzJt9e6uoKpGQWc+ufgtbcxGhL6G3EI2/T39Cf8LSA9bcztLDjt8A9O8hQtegN0FuTiWNrzwhmn95GrDxBX50ogNxczE2ShMbiRCH37TXgDfQt/gaPNWDbul6iKK8Xop6qOsdRons9DvBWQpFWZlCMTP0jtfp2AZP4uz2KrRvD9OnUyhTOn1SrlBdxm8xIvR/xW/lC+50OuDBpfMr8zEA0a8vr0xKJdAplSYrl2NH0L7xt7xO57ba2i0Oe1W2i+USWqlKZUqrT8gVah6Ws/Q4Efpf4rcOGiOW7vGAhXo8u5cyz6LG0GwwPrlSOSfEPMtt6HE6bqirBzbdu7XAot6QlMtVl3ozodzTFB7igiaIsOA6HUCv98uFH1Y9c53JZC1g5qLH+dDt3jAnsNRgsI5B3+Vo100vx+EVi79y07wjkWjDmNNk7MKf8zkc62J7EtugG2vSahZUzb7X462e39jwxirrqjcaGhaEq6pur3c2V5RrWH0PAYW3AIVqVvOIg2rX7YNfv0uPrDR9S4Hb4bhtfvt2hx2eyTi+2j73ZoejSnCuRCJJe7wZqUQolEgyHm9aIi3B1qL3IfR81v9MMtk4D/rgw7Lhdxsb59XHE2d6O2QtOwP+ZNIf2Nkia9nlZw+5jn0raE57RXNXERsL1yC8c9RB9MrRRGgZomuf1xsc7Gf+8A5CqI3OasvLy+cFUYo56W2SK8qIUJXNvrluxWETE0MnmMXY7/UJhVzN7FXJy+I8dPFX0F02QhwL5qIddCEh+V0OYpQvJ4WrUFZwRWg4J7QCLoxhvcy/6BdfpEujBn2bLdKuVqlgmquiJCkuVvk0TZssVjvyut075oYH7MaYgqB3j43tHq/FRcZqqViGdHrN0sTEBNWikEgFBQ9ME9ht9tvn4tjqw1CjI5WyNGpCGtbv7wVdUpy1cc/gSOgATno4n29g+cjSz9GKbW1ZazCY+Ggf08s3GQ1rWgJL9XoLOpMMhUe7tp6LROEVObd13qFIpB6dQQ6jsfPWQKVzc3xPbHOlM2jSaue7Z+30eiILGhrfWGld9XpDI9ib+7Y6R3N5Rc7eTKDBMdCgOVfTaEF60i/nyi912MSX3P8SKMSnZD9AWNGMEp9FRTgWbTJWaAiEXhuff6eDDQyOO+cnfyeSSBOVyWRlQioRsblV7pK1bHOGI2j/nLbEk2vKPEo2t0J82lpbtxkiBfOcLq1U6tGQWi6Ps5TeCpTeB5RC1++KZ1xTzcLF0mviU5im/4VmzLrJZrXbrbabZs2m6dnWkEhUUiIShayzsVEESBKblv17budadmd0kOnbz+6qzVHAarIc9raB3ZHXtzs4nWxle5kP6V276LIkqW2yhJeo1Ro6Z1TVq5z6ajnx0u5Tp3aPJ3ERGZWKxEij1XQns3OxRzkrUqtk1UZkzOEA5gBB5mUbrinIxkHUR6NlgB5yieMA6mZzDu/Sf1fUFlzMYQIhN4WopbNmaPujXzBP5jr/3Cg3f+OkUe7z2RiAa4Cor+fwNcHbDKM28F8BzKaHPnEil0/FCISPI/T/eHooBoyC/WQMMX89M4bQdITD3TBJVkskcCCJkCb2qIcPS4jEpYICPlHAYvXSAgHxBfMhdJCG8HsvtOH3T6wmxj8y1yqUagCXteaPzHVK9lBZ97sXZObiIqGwqNgse6GULCoWCouLSOaRTha1PQq8PMcf+3d48q2fZH+J/vBNJnMAoNj92dXYH7BXs1uwO6F+vf/iRe7/VQQazAQS4YHEFDw+WgzXc09XctcrctfLeDej+WzGB88fgPq79dqng7JrYH7e+7pPBlgpX33jj3gslgFfesRuD0x9EV/SUH9+6fwnMpn5Rq12AUWt8bnXVrqiCMB9jzc5YDI5p7yEzUqnxzrnPZZKzZ6dTBxu9o64yp1F06ajwer55RVKqDkH0v3HAsFqt9t137LESoe9przcJiw2w/8ExEILVCqVxWjsi3UfDQZjgCse6OjYQVE1cqFVLa5USVz/Xak5wFYWRGF4UNtcW9Hatq1gETtZhOtwbRvh2t44WUVtWLcxa/Pku9N5jYrn739nJoObO/qlHZzbxkSoCKW6mXaJCNqrM4/2wmVDXCRx9Ai8E8YlE5kg6aJcex7Ty0RnbzByteiT0LPVcH1LdLxfpNc+/V7YwPQPPBimH+EwmN3QyPmS74Qg385mfU50HDfERROH+wgOh52jRjgmlA//D4HxocCxsHNsCVvYOUeE42DO1+ChMJ4ROB52LhDhBBj3BJwIs1YIr5V6yFmOtHl23SJROesnKoUoztfhVNVzfJrixie2LQYyOu04PHLU0KGjRh3e3o9xadnMGWdXTFh+ZuaMZX2NS1JWd44sZc2g7JxKw+mhFggvlRonUuOciBxRP9MPf0SdhZp1UIn62rdeGmmdx0M4KcSkyg3ymhomKm4NopKJYjVK1Pwg77G+nOF1omagZqcu9veLkf5+kdl5Ue/211um6BOcfkqv97Wp8LXJvJTte/U/vRpEH1VWaaFgTzeZk1jtnulTMlPF+GjvPtUn82Qi3PEpX594WGHsC2tMyk0b2T7aFLY137Tt1SbJSFK1Qq6HG+ydqHDyiRw5Vj6Dsc2+/aEf/+p4n6MzO1780s8+l3yLvWlftVXt32+T2jbflAXd9S4H9c0qAAAAAQAAAAMAADbZ75FfDzz1AAsIAAAAAADE8BEuAAAAANrYP6v8Bf3VBkcIYgAAAAkAAgAAAAAAAHjaY2BkYOBI+nuVgYHl7B/Wf21s7kARVMAIAJYNBeMAeNpiOQtoeQ40GggAAAx/9wgBUAWEhgglCWkrGAkkgIHZGIWlMVxhwmwYSMTZpdV1A3cD7AEO0FP0ECnHAPh/fLiUaMsNpRoSEy1LdVdeDBS+9XyZ66gGr8FzcBRsKX6bMpGaHaFNj05FImc2XIvsqnjzqa9vz9i7W3dOhKYW9q0ZiE0deBKLNfV8GAp1HRqLhW5c/P0Y2fZgXSyXuzeTy3SlUg0ziYpSkMlFJoZaIkttdbWVIVYKRqo6BhbmCqVrqqq8yuLY+T+StEa3AAAAAAAcAHkA2gDzAQsBIwFTAXEBkQIGAj0CUAJvAtsDJwNVA5cD5QQ7BKgExwT7BQoFGQVEBWsFgAWPBZ8FsgYMBkgGnAb5BzUHZgd/B7cH9QgfCJcIsAjkCRYJLwlaCXIJjwnFCgEKNgqKCuQLHwuWC+8L/wwyDF0M1QztDQoNOg1UDWwNfw2SDfEOCg45DlEObw6lDuEPFg9nD74P9hBNEJ8Q9BEyEXARiRGcEa8SFRIyEj4SShLCEsoS1hLeEuYS8hL+EwYTDhMWEx4TKhMyEzoTQhNKE1ITWhNiE2oTchN6E4ITjROVE50T6xPzE/sUBhQRFBkUIRQsFDQUPxRKFFYUYhRtFHkUnRS/AAB42mNgZGBgaGPYyCDG0M7ACuYhADMDIwAtMQHgeNqNkTV2A0AMRMcYZk4TZmZqwszYmpnZF8lJfAr3gTonyTw9hfEt/ZU00gKAStzCBIO5jFwAlA1oRkHZiGoUlU1YxqOyGf2GemUL2g2Lylb0Gs6Vq3FpyEDYwFqGonIF+V65+i2/oY72J2wgihjySMAPL3xIoRPTmMQU5kiXtLi5niMKB0eKoxNHnCNCp9RFEWCMU5RrSCNFTZT2JPeD5BRbjLtlTLB54ZeINPONUxVFWKxRNi9CcMMj2VNUTCDxrm5Yqw79cJpzar3MG4KduhmMY1LaCnZwwrZDeq9UHcY+KX+668eoa7jljn7xd77V+1cNfRV9k6y0cXpiHE5583F5Qy+9IdZw0hJhNbe8yiH2sIEtHOOC8ximpfYNvfqH2OOwq/JYMoXB/TOSL2NFAHjaY2BmAIP/WQwpQIqRAQ0AACowAdIAAA==) format("woff");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:u+0370-03ff}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(../fonts/roboto-mono-latin-ext-400-normal.ecd99f6c.woff) format("woff");unicode-range:u+0100-02af,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1e??,u+2020,u+20a0-20ab,u+20ad-20cf,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(../fonts/roboto-mono-latin-400-normal.d3026ee2.woff2) format("woff2"),url(../fonts/roboto-mono-latin-400-normal.b889d0d8.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}.editor[data-v-f81849bc]{font-family:Roboto Mono,monospace,serif} \ No newline at end of file diff --git a/dist/css/265.dee3905a.css b/dist/css/265.dee3905a.css new file mode 100644 index 00000000..ac5dd572 --- /dev/null +++ b/dist/css/265.dee3905a.css @@ -0,0 +1 @@ +.monaco-aria-container{left:-999em;position:absolute}.monaco-editor .selection-anchor{background-color:#007acc;width:2px!important}.monaco-editor .bracket-match{background-color:var(--vscode-editorBracketMatch-background);border:1px solid var(--vscode-editorBracketMatch-border);box-sizing:border-box}@font-face{font-display:block;font-family:codicon;src:url(../fonts/codicon.4a477f66.ttf) format("truetype")}.codicon[class*=codicon-]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font:normal normal normal 16px/1 codicon;text-align:center;text-decoration:none;text-rendering:auto;text-transform:none;user-select:none;-webkit-user-select:none}.codicon-wrench-subaction{opacity:.5}@keyframes codicon-spin{to{transform:rotate(1turn)}}.codicon-gear.codicon-modifier-spin,.codicon-loading.codicon-modifier-spin,.codicon-notebook-state-executing.codicon-modifier-spin,.codicon-sync.codicon-modifier-spin{animation:codicon-spin 1.5s steps(30) infinite}.codicon-modifier-disabled{opacity:.4}.codicon-loading,.codicon-tree-item-loading:before{animation-duration:1s!important;animation-timing-function:cubic-bezier(.53,.21,.29,.67)!important}.monaco-editor .codicon.codicon-symbol-array,.monaco-workbench .codicon.codicon-symbol-array{color:var(--vscode-symbolIcon-arrayForeground)}.monaco-editor .codicon.codicon-symbol-boolean,.monaco-workbench .codicon.codicon-symbol-boolean{color:var(--vscode-symbolIcon-booleanForeground)}.monaco-editor .codicon.codicon-symbol-class,.monaco-workbench .codicon.codicon-symbol-class{color:var(--vscode-symbolIcon-classForeground)}.monaco-editor .codicon.codicon-symbol-method,.monaco-workbench .codicon.codicon-symbol-method{color:var(--vscode-symbolIcon-methodForeground)}.monaco-editor .codicon.codicon-symbol-color,.monaco-workbench .codicon.codicon-symbol-color{color:var(--vscode-symbolIcon-colorForeground)}.monaco-editor .codicon.codicon-symbol-constant,.monaco-workbench .codicon.codicon-symbol-constant{color:var(--vscode-symbolIcon-constantForeground)}.monaco-editor .codicon.codicon-symbol-constructor,.monaco-workbench .codicon.codicon-symbol-constructor{color:var(--vscode-symbolIcon-constructorForeground)}.monaco-editor .codicon.codicon-symbol-enum,.monaco-editor .codicon.codicon-symbol-value,.monaco-workbench .codicon.codicon-symbol-enum,.monaco-workbench .codicon.codicon-symbol-value{color:var(--vscode-symbolIcon-enumeratorForeground)}.monaco-editor .codicon.codicon-symbol-enum-member,.monaco-workbench .codicon.codicon-symbol-enum-member{color:var(--vscode-symbolIcon-enumeratorMemberForeground)}.monaco-editor .codicon.codicon-symbol-event,.monaco-workbench .codicon.codicon-symbol-event{color:var(--vscode-symbolIcon-eventForeground)}.monaco-editor .codicon.codicon-symbol-field,.monaco-workbench .codicon.codicon-symbol-field{color:var(--vscode-symbolIcon-fieldForeground)}.monaco-editor .codicon.codicon-symbol-file,.monaco-workbench .codicon.codicon-symbol-file{color:var(--vscode-symbolIcon-fileForeground)}.monaco-editor .codicon.codicon-symbol-folder,.monaco-workbench .codicon.codicon-symbol-folder{color:var(--vscode-symbolIcon-folderForeground)}.monaco-editor .codicon.codicon-symbol-function,.monaco-workbench .codicon.codicon-symbol-function{color:var(--vscode-symbolIcon-functionForeground)}.monaco-editor .codicon.codicon-symbol-interface,.monaco-workbench .codicon.codicon-symbol-interface{color:var(--vscode-symbolIcon-interfaceForeground)}.monaco-editor .codicon.codicon-symbol-key,.monaco-workbench .codicon.codicon-symbol-key{color:var(--vscode-symbolIcon-keyForeground)}.monaco-editor .codicon.codicon-symbol-keyword,.monaco-workbench .codicon.codicon-symbol-keyword{color:var(--vscode-symbolIcon-keywordForeground)}.monaco-editor .codicon.codicon-symbol-module,.monaco-workbench .codicon.codicon-symbol-module{color:var(--vscode-symbolIcon-moduleForeground)}.monaco-editor .codicon.codicon-symbol-namespace,.monaco-workbench .codicon.codicon-symbol-namespace{color:var(--vscode-symbolIcon-namespaceForeground)}.monaco-editor .codicon.codicon-symbol-null,.monaco-workbench .codicon.codicon-symbol-null{color:var(--vscode-symbolIcon-nullForeground)}.monaco-editor .codicon.codicon-symbol-number,.monaco-workbench .codicon.codicon-symbol-number{color:var(--vscode-symbolIcon-numberForeground)}.monaco-editor .codicon.codicon-symbol-object,.monaco-workbench .codicon.codicon-symbol-object{color:var(--vscode-symbolIcon-objectForeground)}.monaco-editor .codicon.codicon-symbol-operator,.monaco-workbench .codicon.codicon-symbol-operator{color:var(--vscode-symbolIcon-operatorForeground)}.monaco-editor .codicon.codicon-symbol-package,.monaco-workbench .codicon.codicon-symbol-package{color:var(--vscode-symbolIcon-packageForeground)}.monaco-editor .codicon.codicon-symbol-property,.monaco-workbench .codicon.codicon-symbol-property{color:var(--vscode-symbolIcon-propertyForeground)}.monaco-editor .codicon.codicon-symbol-reference,.monaco-workbench .codicon.codicon-symbol-reference{color:var(--vscode-symbolIcon-referenceForeground)}.monaco-editor .codicon.codicon-symbol-snippet,.monaco-workbench .codicon.codicon-symbol-snippet{color:var(--vscode-symbolIcon-snippetForeground)}.monaco-editor .codicon.codicon-symbol-string,.monaco-workbench .codicon.codicon-symbol-string{color:var(--vscode-symbolIcon-stringForeground)}.monaco-editor .codicon.codicon-symbol-struct,.monaco-workbench .codicon.codicon-symbol-struct{color:var(--vscode-symbolIcon-structForeground)}.monaco-editor .codicon.codicon-symbol-text,.monaco-workbench .codicon.codicon-symbol-text{color:var(--vscode-symbolIcon-textForeground)}.monaco-editor .codicon.codicon-symbol-type-parameter,.monaco-workbench .codicon.codicon-symbol-type-parameter{color:var(--vscode-symbolIcon-typeParameterForeground)}.monaco-editor .codicon.codicon-symbol-unit,.monaco-workbench .codicon.codicon-symbol-unit{color:var(--vscode-symbolIcon-unitForeground)}.monaco-editor .codicon.codicon-symbol-variable,.monaco-workbench .codicon.codicon-symbol-variable{color:var(--vscode-symbolIcon-variableForeground)}.monaco-editor .lightBulbWidget{align-items:center;display:flex;justify-content:center}.monaco-editor .lightBulbWidget:hover{cursor:pointer}.monaco-editor .lightBulbWidget.codicon-light-bulb{color:var(--vscode-editorLightBulb-foreground)}.monaco-editor .lightBulbWidget.codicon-lightbulb-autofix{color:var(--vscode-editorLightBulbAutoFix-foreground,var(--vscode-editorLightBulb-foreground))}.monaco-editor .lightBulbWidget:before{position:relative;z-index:2}.monaco-editor .lightBulbWidget:after{background-color:var(--vscode-editor-background);content:"";display:block;height:100%;left:0;opacity:.3;position:absolute;top:0;width:100%;z-index:1}.monaco-editor .monaco-editor-overlaymessage{padding-bottom:8px;z-index:10000}.monaco-editor .monaco-editor-overlaymessage.below{padding-bottom:0;padding-top:8px;z-index:10000}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.monaco-editor .monaco-editor-overlaymessage.fadeIn{animation:fadeIn .15s ease-out}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.monaco-editor .monaco-editor-overlaymessage.fadeOut{animation:fadeOut .1s ease-out}.monaco-editor .monaco-editor-overlaymessage .message{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-inputValidation-infoBorder);border-radius:3px;color:var(--vscode-editorHoverWidget-foreground);padding:2px 4px}.monaco-editor .monaco-editor-overlaymessage .message p{margin-block:0}.monaco-editor .monaco-editor-overlaymessage .message a{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-editor-overlaymessage .message a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor.hc-black .monaco-editor-overlaymessage .message,.monaco-editor.hc-light .monaco-editor-overlaymessage .message{border-width:2px}.monaco-editor .monaco-editor-overlaymessage .anchor{border:8px solid #0000;height:0!important;left:2px;position:absolute;width:0!important;z-index:1000}.monaco-editor .monaco-editor-overlaymessage .anchor.top{border-bottom-color:var(--vscode-inputValidation-infoBorder)}.monaco-editor .monaco-editor-overlaymessage .anchor.below{border-top-color:var(--vscode-inputValidation-infoBorder)}.monaco-editor .monaco-editor-overlaymessage.below .anchor.below,.monaco-editor .monaco-editor-overlaymessage:not(.below) .anchor.top{display:none}.monaco-editor .monaco-editor-overlaymessage.below .anchor.top{display:inherit;top:-8px}.monaco-editor .rendered-markdown kbd{background-color:var(--vscode-keybindingLabel-background);border-color:var(--vscode-keybindingLabel-border);border-bottom-color:var(--vscode-keybindingLabel-bottomBorder);border-radius:3px;border-style:solid;border-width:1px;box-shadow:inset 0 -1px 0 var(--vscode-widget-shadow);color:var(--vscode-keybindingLabel-foreground);padding:1px 3px;vertical-align:middle}.monaco-list{height:100%;position:relative;white-space:nowrap;width:100%}.monaco-list.mouse-support{user-select:none;-webkit-user-select:none}.monaco-list>.monaco-scrollable-element{height:100%}.monaco-list-rows{height:100%;position:relative;width:100%}.monaco-list.horizontal-scrolling .monaco-list-rows{min-width:100%;width:auto}.monaco-list-row{box-sizing:border-box;overflow:hidden;position:absolute;width:100%}.monaco-list.mouse-support .monaco-list-row{cursor:pointer;touch-action:none}.monaco-list-row.scrolling{display:none!important}.monaco-list.element-focused,.monaco-list.selection-multiple,.monaco-list.selection-single{outline:0!important}.monaco-drag-image{border-radius:10px;display:inline-block;font-size:12px;padding:1px 7px;position:absolute;z-index:1000}.monaco-list-type-filter-message{box-sizing:border-box;height:100%;left:0;opacity:.7;padding:40px 1em 1em;pointer-events:none;position:absolute;text-align:center;top:0;white-space:normal;width:100%}.monaco-list-type-filter-message:empty{display:none}.monaco-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.monaco-scrollable-element>.visible{background:#0000;opacity:1;transition:opacity .1s linear;z-index:11}.monaco-scrollable-element>.invisible{opacity:0;pointer-events:none}.monaco-scrollable-element>.invisible.fade{transition:opacity .8s linear}.monaco-scrollable-element>.shadow{display:none;position:absolute}.monaco-scrollable-element>.shadow.top{box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset;display:block;height:3px;left:3px;top:0;width:100%}.monaco-scrollable-element>.shadow.left{box-shadow:var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset;display:block;height:100%;left:0;top:3px;width:3px}.monaco-scrollable-element>.shadow.top-left-corner{display:block;height:3px;left:0;top:0;width:3px}.monaco-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset}.monaco-scrollable-element>.scrollbar>.slider{background:var(--vscode-scrollbarSlider-background)}.monaco-scrollable-element>.scrollbar>.slider:hover{background:var(--vscode-scrollbarSlider-hoverBackground)}.monaco-scrollable-element>.scrollbar>.slider.active{background:var(--vscode-scrollbarSlider-activeBackground)}.monaco-select-box-dropdown-padding{--dropdown-padding-top:1px;--dropdown-padding-bottom:1px}.hc-black .monaco-select-box-dropdown-padding,.hc-light .monaco-select-box-dropdown-padding{--dropdown-padding-top:3px;--dropdown-padding-bottom:4px}.monaco-select-box-dropdown-container{box-sizing:border-box;display:none}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown *{margin:0}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown a:focus{outline:1px solid -webkit-focus-ring-color;outline-offset:-1px}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown code{font-family:var(--monaco-monospace-font);line-height:15px}.monaco-select-box-dropdown-container.visible{border-bottom-left-radius:3px;border-bottom-right-radius:3px;display:flex;flex-direction:column;overflow:hidden;text-align:left;width:1px}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container{align-self:flex-start;box-sizing:border-box;flex:0 0 auto;overflow:hidden;padding-bottom:var(--dropdown-padding-bottom);padding-left:1px;padding-right:1px;padding-top:var(--dropdown-padding-top);width:100%}.monaco-select-box-dropdown-container>.select-box-details-pane{padding:5px}.hc-black .monaco-select-box-dropdown-container>.select-box-dropdown-list-container{padding-bottom:var(--dropdown-padding-bottom);padding-top:var(--dropdown-padding-top)}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row{cursor:pointer}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-text{float:left;overflow:hidden;padding-left:3.5px;text-overflow:ellipsis;white-space:nowrap}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-detail{float:left;opacity:.7;overflow:hidden;padding-left:3.5px;text-overflow:ellipsis;white-space:nowrap}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-decorator-right{float:right;overflow:hidden;padding-right:10px;text-overflow:ellipsis;white-space:nowrap}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.visually-hidden{height:1px;left:-10000px;overflow:hidden;position:absolute;top:auto;width:1px}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control{align-self:flex-start;flex:1 1 auto;opacity:0}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control>.width-control-div{max-height:0;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control>.width-control-div>.option-text-width-control{padding-left:4px;padding-right:8px;white-space:nowrap}.monaco-select-box{border-radius:2px;cursor:pointer;width:100%}.monaco-select-box-dropdown-container{font-size:13px;font-weight:400;text-transform:none}.monaco-action-bar .action-item.select-container{cursor:default}.monaco-action-bar .action-item .monaco-select-box{cursor:pointer;min-height:18px;min-width:100px;padding:2px 23px 2px 8px}.mac .monaco-action-bar .action-item .monaco-select-box{border-radius:5px;font-size:11px}.monaco-action-bar{height:100%;white-space:nowrap}.monaco-action-bar .actions-container{align-items:center;display:flex;height:100%;margin:0 auto;padding:0;width:100%}.monaco-action-bar.vertical .actions-container{display:inline-block}.monaco-action-bar .action-item{align-items:center;cursor:pointer;display:block;justify-content:center;position:relative}.monaco-action-bar .action-item.disabled{cursor:default}.monaco-action-bar .action-item .codicon,.monaco-action-bar .action-item .icon{display:block}.monaco-action-bar .action-item .codicon{align-items:center;display:flex;height:16px;width:16px}.monaco-action-bar .action-label{border-radius:5px;display:flex;font-size:11px;padding:3px}.monaco-action-bar .action-item.disabled .action-label,.monaco-action-bar .action-item.disabled .action-label:before,.monaco-action-bar .action-item.disabled .action-label:hover{opacity:.6}.monaco-action-bar.vertical{text-align:left}.monaco-action-bar.vertical .action-item{display:block}.monaco-action-bar.vertical .action-label.separator{border-bottom:1px solid #bbb;display:block;margin-left:.8em;margin-right:.8em;padding-top:1px}.monaco-action-bar .action-item .action-label.separator{background-color:#bbb;cursor:default;height:16px;margin:5px 4px!important;min-width:1px;padding:0;width:1px}.secondary-actions .monaco-action-bar .action-label{margin-left:6px}.monaco-action-bar .action-item.select-container{align-items:center;display:flex;flex:1;justify-content:center;margin-right:10px;max-width:170px;min-width:60px;overflow:hidden}.monaco-action-bar .action-item.action-dropdown-item{display:flex}.monaco-action-bar .action-item.action-dropdown-item>.action-dropdown-item-separator{align-items:center;cursor:default;display:flex}.monaco-action-bar .action-item.action-dropdown-item>.action-dropdown-item-separator>div{width:1px}.action-widget{background-color:var(--vscode-editorWidget-background);border:1px solid var(--vscode-editorWidget-border)!important;border-radius:0;color:var(--vscode-editorWidget-foreground);display:block;font-size:13px;max-width:80vw;min-width:160px;width:100%;z-index:40}.context-view-block{z-index:-1}.context-view-block,.context-view-pointerBlock{cursor:auto;height:100%;left:0;position:fixed;top:0;width:100%}.context-view-pointerBlock{z-index:2}.action-widget .monaco-list{border:0!important;user-select:none;-webkit-user-select:none}.action-widget .monaco-list:focus:before{outline:0!important}.action-widget .monaco-list .monaco-scrollable-element{overflow:visible}.action-widget .monaco-list .monaco-list-row{cursor:pointer;padding:0 10px;touch-action:none;white-space:nowrap;width:100%}.action-widget .monaco-list .monaco-list-row.action.focused:not(.option-disabled){background-color:var(--vscode-quickInputList-focusBackground)!important;color:var(--vscode-quickInputList-focusForeground);outline:1px solid var(--vscode-menu-selectionBorder,#0000);outline-offset:-1px}.action-widget .monaco-list-row.group-header{color:var(--vscode-pickerGroup-foreground)!important;font-weight:600}.action-widget .monaco-list .group-header,.action-widget .monaco-list .option-disabled,.action-widget .monaco-list .option-disabled .focused,.action-widget .monaco-list .option-disabled .focused:before,.action-widget .monaco-list .option-disabled:before{-webkit-touch-callout:none;background-color:initial!important;cursor:default!important;outline:0 solid!important;-webkit-user-select:none;user-select:none}.action-widget .monaco-list-row.action{align-items:center;display:flex;gap:6px}.action-widget .monaco-list-row.action.option-disabled{color:var(--vscode-disabledForeground)}.action-widget .monaco-list-row.action.option-disabled .codicon{opacity:.4}.action-widget .monaco-list-row.action:not(.option-disabled) .codicon{color:inherit}.action-widget .monaco-list-row.action .title{flex:1;overflow:hidden;text-overflow:ellipsis}.action-widget .action-widget-action-bar{background-color:var(--vscode-editorHoverWidget-statusBarBackground);border-top:1px solid var(--vscode-editorHoverWidget-border)}.action-widget .action-widget-action-bar:before{content:"";display:block;width:100%}.action-widget .action-widget-action-bar .actions-container{padding:0 8px}.action-widget-action-bar .action-label{color:var(--vscode-textLink-activeForeground);font-size:12px;line-height:22px;padding:0;pointer-events:all}.action-widget-action-bar .action-item{margin-right:16px;pointer-events:none}.action-widget-action-bar .action-label:hover{background-color:initial!important}.monaco-keybinding{align-items:center;display:flex;line-height:10px}.monaco-keybinding>.monaco-keybinding-key{border-radius:3px;border-style:solid;border-width:1px;display:inline-block;font-size:11px;margin:0 2px;padding:3px 5px;vertical-align:middle}.monaco-keybinding>.monaco-keybinding-key:first-child{margin-left:0}.monaco-keybinding>.monaco-keybinding-key:last-child{margin-right:0}.monaco-keybinding>.monaco-keybinding-key-separator{display:inline-block}.monaco-keybinding>.monaco-keybinding-key-chord-separator{width:6px}.monaco-editor .codelens-decoration{font-feature-settings:var(--vscode-editorCodeLens-fontFeatureSettings);color:var(--vscode-editorCodeLens-foreground);display:inline-block;font-family:var(--vscode-editorCodeLens-fontFamily),var(--vscode-editorCodeLens-fontFamilyDefault);font-size:var(--vscode-editorCodeLens-fontSize);line-height:var(--vscode-editorCodeLens-lineHeight);overflow:hidden;padding-right:calc(var(--vscode-editorCodeLens-fontSize)*.5);text-overflow:ellipsis;white-space:nowrap}.monaco-editor .codelens-decoration>a,.monaco-editor .codelens-decoration>span{user-select:none;-webkit-user-select:none;vertical-align:sub;white-space:nowrap}.monaco-editor .codelens-decoration>a{text-decoration:none}.monaco-editor .codelens-decoration>a:hover{cursor:pointer}.monaco-editor .codelens-decoration>a:hover,.monaco-editor .codelens-decoration>a:hover .codicon{color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .codelens-decoration .codicon{color:currentColor!important;color:var(--vscode-editorCodeLens-foreground);font-size:var(--vscode-editorCodeLens-fontSize);line-height:var(--vscode-editorCodeLens-lineHeight);vertical-align:middle}.monaco-editor .codelens-decoration>a:hover .codicon:before{cursor:pointer}@keyframes fadein{0%{opacity:0;visibility:visible}to{opacity:1}}.monaco-editor .codelens-decoration.fadein{animation:fadein .1s linear}.monaco-editor.hc-light .dnd-target,.monaco-editor.vs .dnd-target{border-right:2px dotted #000;color:#fff}.monaco-editor.vs-dark .dnd-target{border-right:2px dotted #aeafad;color:#51504f}.monaco-editor.hc-black .dnd-target{border-right:2px dotted #fff;color:#000}.monaco-editor.hc-black.mac.mouse-default .view-lines,.monaco-editor.hc-light.mac.mouse-default .view-lines,.monaco-editor.mouse-default .view-lines,.monaco-editor.vs-dark.mac.mouse-default .view-lines{cursor:default}.monaco-editor.hc-black.mac.mouse-copy .view-lines,.monaco-editor.hc-light.mac.mouse-copy .view-lines,.monaco-editor.mouse-copy .view-lines,.monaco-editor.vs-dark.mac.mouse-copy .view-lines{cursor:copy}.inline-editor-progress-decoration{display:inline-block;height:1em;width:1em}.inline-progress-widget{align-items:center;display:flex!important;justify-content:center}.inline-progress-widget .icon{font-size:80%!important}.inline-progress-widget:hover .icon{animation:none;font-size:90%!important}.inline-progress-widget:hover .icon:before{content:"\ea76"}.monaco-text-button{align-items:center;border:1px solid var(--vscode-button-border,#0000);border-radius:2px;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;line-height:18px;padding:4px;text-align:center;width:100%}.monaco-text-button:focus{outline-offset:2px!important}.monaco-text-button:hover{text-decoration:none!important}.monaco-button.disabled,.monaco-button.disabled:focus{cursor:default;opacity:.4!important}.monaco-text-button .codicon{color:inherit!important;margin:0 .2em}.monaco-text-button.monaco-text-button-with-short-label{flex-direction:row;flex-wrap:wrap;height:28px;overflow:hidden;padding:0 4px}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label{flex-basis:100%}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label-short{flex-grow:1;overflow:hidden;width:0}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label,.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label-short{align-items:center;display:flex;font-style:inherit;font-weight:400;justify-content:center;padding:4px 0}.monaco-button-dropdown{cursor:pointer;display:flex}.monaco-button-dropdown.disabled{cursor:default}.monaco-button-dropdown>.monaco-button:focus{outline-offset:-1px!important}.monaco-button-dropdown.disabled>.monaco-button-dropdown-separator,.monaco-button-dropdown.disabled>.monaco-button.disabled,.monaco-button-dropdown.disabled>.monaco-button.disabled:focus{opacity:.4!important}.monaco-button-dropdown>.monaco-button.monaco-text-button{border-right-width:0!important}.monaco-button-dropdown .monaco-button-dropdown-separator{cursor:default;padding:4px 0}.monaco-button-dropdown .monaco-button-dropdown-separator>div{height:100%;width:1px}.monaco-button-dropdown>.monaco-button.monaco-dropdown-button{border:1px solid var(--vscode-button-border,#0000);border-left-width:0!important;border-radius:0 2px 2px 0}.monaco-button-dropdown>.monaco-button.monaco-text-button{border-radius:2px 0 0 2px}.monaco-description-button{align-items:center;display:flex;flex-direction:column;margin:4px 5px}.monaco-description-button .monaco-button-description{font-size:11px;font-style:italic;padding:4px 20px}.monaco-description-button .monaco-button-description,.monaco-description-button .monaco-button-label{align-items:center;display:flex;justify-content:center}.monaco-description-button .monaco-button-description>.codicon,.monaco-description-button .monaco-button-label>.codicon{color:inherit!important;margin:0 .2em}.monaco-button-dropdown.default-colors>.monaco-button,.monaco-button.default-colors{background-color:var(--vscode-button-background);color:var(--vscode-button-foreground)}.monaco-button-dropdown.default-colors>.monaco-button:hover,.monaco-button.default-colors:hover{background-color:var(--vscode-button-hoverBackground)}.monaco-button-dropdown.default-colors>.monaco-button.secondary,.monaco-button.default-colors.secondary{background-color:var(--vscode-button-secondaryBackground);color:var(--vscode-button-secondaryForeground)}.monaco-button-dropdown.default-colors>.monaco-button.secondary:hover,.monaco-button.default-colors.secondary:hover{background-color:var(--vscode-button-secondaryHoverBackground)}.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator{background-color:var(--vscode-button-background);border-bottom:1px solid var(--vscode-button-border);border-top:1px solid var(--vscode-button-border)}.monaco-button-dropdown.default-colors .monaco-button.secondary+.monaco-button-dropdown-separator{background-color:var(--vscode-button-secondaryBackground)}.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator>div{background-color:var(--vscode-button-separator)}.post-edit-widget{background-color:var(--vscode-editorWidget-background);border:1px solid var(--vscode-widget-border,#0000);border-radius:4px;box-shadow:0 0 8px 2px var(--vscode-widget-shadow);overflow:hidden}.post-edit-widget .monaco-button{border:none;border-radius:0;padding:2px}.post-edit-widget .monaco-button:hover{background-color:var(--vscode-button-secondaryHoverBackground)!important}.post-edit-widget .monaco-button .codicon{margin:0}::-ms-clear{display:none}.monaco-editor .editor-widget input{color:inherit}.monaco-editor{-webkit-text-size-adjust:100%;color:var(--vscode-editor-foreground);overflow:visible;position:relative}.monaco-editor,.monaco-editor-background{background-color:var(--vscode-editor-background)}.monaco-editor .rangeHighlight{background-color:var(--vscode-editor-rangeHighlightBackground);border:1px solid var(--vscode-editor-rangeHighlightBorder);box-sizing:border-box}.monaco-editor.hc-black .rangeHighlight,.monaco-editor.hc-light .rangeHighlight{border-style:dotted}.monaco-editor .symbolHighlight{background-color:var(--vscode-editor-symbolHighlightBackground);border:1px solid var(--vscode-editor-symbolHighlightBorder);box-sizing:border-box}.monaco-editor.hc-black .symbolHighlight,.monaco-editor.hc-light .symbolHighlight{border-style:dotted}.monaco-editor .overflow-guard{overflow:hidden;position:relative}.monaco-editor .view-overlays{position:absolute;top:0}.monaco-editor .squiggly-error{border-bottom:4px double var(--vscode-editorError-border)}.monaco-editor .squiggly-error:before{background:var(--vscode-editorError-background);content:"";display:block;height:100%;width:100%}.monaco-editor .squiggly-warning{border-bottom:4px double var(--vscode-editorWarning-border)}.monaco-editor .squiggly-warning:before{background:var(--vscode-editorWarning-background);content:"";display:block;height:100%;width:100%}.monaco-editor .squiggly-info{border-bottom:4px double var(--vscode-editorInfo-border)}.monaco-editor .squiggly-info:before{background:var(--vscode-editorInfo-background);content:"";display:block;height:100%;width:100%}.monaco-editor .squiggly-hint{border-bottom:2px dotted var(--vscode-editorHint-border)}.monaco-editor.showUnused .squiggly-unnecessary{border-bottom:2px dashed var(--vscode-editorUnnecessaryCode-border)}.monaco-editor.showDeprecated .squiggly-inline-deprecated{text-decoration:line-through;text-decoration-color:var(--vscode-editor-foreground,inherit)}.monaco-editor .inputarea{background-color:initial;border:none;color:#0000;margin:0;min-height:0;min-width:0;outline:none!important;overflow:hidden;padding:0;position:absolute;resize:none;z-index:-10}.monaco-editor .inputarea.ime-input{caret-color:var(--vscode-editorCursor-foreground);color:var(--vscode-editor-foreground);z-index:10}.monaco-editor .margin-view-overlays .line-numbers{box-sizing:border-box;cursor:default;display:inline-block;font-variant-numeric:tabular-nums;height:100%;position:absolute;text-align:right;vertical-align:middle}.monaco-editor .relative-current-line-number{display:inline-block;text-align:left;width:100%}.monaco-editor .margin-view-overlays .line-numbers.lh-odd{margin-top:1px}.monaco-editor .line-numbers{color:var(--vscode-editorLineNumber-foreground)}.monaco-editor .line-numbers.active-line-number{color:var(--vscode-editorLineNumber-activeForeground)}.monaco-editor .margin{background-color:var(--vscode-editorGutter-background)}.monaco-mouse-cursor-text{cursor:text}.monaco-editor .margin-view-overlays .current-line,.monaco-editor .view-overlays .current-line{box-sizing:border-box;display:block;left:0;position:absolute;top:0}.monaco-editor .margin-view-overlays .current-line.current-line-margin.current-line-margin-both{border-right:0}.monaco-editor .lines-content .cdr{position:absolute}.monaco-editor .lines-content .core-guide{box-sizing:border-box;position:absolute}.mtkcontrol{background:#960000!important;color:#fff!important}.mtkoverflow{background-color:var(--vscode-button-background,--vscode-editor-background);border-color:var(--vscode-contrastBorder);border-radius:2px;border-style:solid;border-width:1px;color:var(--vscode-button-foreground,--vscode-editor-foreground);cursor:pointer;padding:4px}.mtkoverflow:hover{background-color:var(--vscode-button-hoverBackground)}.monaco-editor.no-user-select .lines-content,.monaco-editor.no-user-select .view-line,.monaco-editor.no-user-select .view-lines{user-select:none;-webkit-user-select:none}.monaco-editor.mac .lines-content:hover,.monaco-editor.mac .view-line:hover,.monaco-editor.mac .view-lines:hover{user-select:text;-webkit-user-select:text;-ms-user-select:text}.monaco-editor.enable-user-select{user-select:auto;-webkit-user-select:initial}.monaco-editor .view-lines{white-space:nowrap}.monaco-editor .view-line{position:absolute;width:100%}.monaco-editor .mtkw,.monaco-editor .mtkz{color:var(--vscode-editorWhitespace-foreground)!important}.monaco-editor .mtkz{display:inline-block}.monaco-editor .lines-decorations{background:#fff;position:absolute;top:0}.monaco-editor .margin-view-overlays .cldr{height:100%;position:absolute}.monaco-editor .glyph-margin{position:absolute;top:0}.monaco-editor .glyph-margin-widgets .cgmr{align-items:center;display:flex;justify-content:center;position:absolute}.monaco-editor .glyph-margin-widgets .cgmr.codicon-modifier-spin:before{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.monaco-editor .margin-view-overlays .cmdr{height:100%;left:0;position:absolute;width:100%}.monaco-editor .minimap.slider-mouseover .minimap-slider{opacity:0;transition:opacity .1s linear}.monaco-editor .minimap.slider-mouseover .minimap-slider.active,.monaco-editor .minimap.slider-mouseover:hover .minimap-slider{opacity:1}.monaco-editor .minimap-slider .minimap-slider-horizontal{background:var(--vscode-minimapSlider-background)}.monaco-editor .minimap-slider:hover .minimap-slider-horizontal{background:var(--vscode-minimapSlider-hoverBackground)}.monaco-editor .minimap-slider.active .minimap-slider-horizontal{background:var(--vscode-minimapSlider-activeBackground)}.monaco-editor .minimap-shadow-visible{box-shadow:var(--vscode-scrollbar-shadow) -6px 0 6px -6px inset}.monaco-editor .minimap-shadow-hidden{position:absolute;width:0}.monaco-editor .minimap-shadow-visible{left:-6px;position:absolute;width:6px}.monaco-editor.no-minimap-shadow .minimap-shadow-visible{left:-1px;position:absolute;width:1px}.minimap.autohide{opacity:0;transition:opacity .5s}.minimap.autohide:hover{opacity:1}.monaco-editor .overlayWidgets{left:0;position:absolute;top:0}.monaco-editor .view-ruler{box-shadow:1px 0 0 0 var(--vscode-editorRuler-foreground) inset;position:absolute;top:0}.monaco-editor .scroll-decoration{box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset;height:6px;left:0;position:absolute;top:0}.monaco-editor .lines-content .cslr{position:absolute}.monaco-editor .focused .selected-text{background-color:var(--vscode-editor-selectionBackground)}.monaco-editor .selected-text{background-color:var(--vscode-editor-inactiveSelectionBackground)}.monaco-editor .top-left-radius{border-top-left-radius:3px}.monaco-editor .bottom-left-radius{border-bottom-left-radius:3px}.monaco-editor .top-right-radius{border-top-right-radius:3px}.monaco-editor .bottom-right-radius{border-bottom-right-radius:3px}.monaco-editor.hc-black .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-black .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-black .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-black .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor.hc-light .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-light .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-light .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-light .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor .cursors-layer{position:absolute;top:0}.monaco-editor .cursors-layer>.cursor{box-sizing:border-box;overflow:hidden;position:absolute}.monaco-editor .cursors-layer.cursor-smooth-caret-animation>.cursor{transition:all 80ms}.monaco-editor .cursors-layer.cursor-block-outline-style>.cursor{background:#0000!important;border-style:solid;border-width:1px}.monaco-editor .cursors-layer.cursor-underline-style>.cursor{background:#0000!important;border-bottom-style:solid;border-bottom-width:2px}.monaco-editor .cursors-layer.cursor-underline-thin-style>.cursor{background:#0000!important;border-bottom-style:solid;border-bottom-width:1px}@keyframes monaco-cursor-smooth{0%,20%{opacity:1}60%,to{opacity:0}}@keyframes monaco-cursor-phase{0%,20%{opacity:1}90%,to{opacity:0}}@keyframes monaco-cursor-expand{0%,20%{transform:scaleY(1)}80%,to{transform:scaleY(0)}}.cursor-smooth{animation:monaco-cursor-smooth .5s ease-in-out 0s 20 alternate}.cursor-phase{animation:monaco-cursor-phase .5s ease-in-out 0s 20 alternate}.cursor-expand>.cursor{animation:monaco-cursor-expand .5s ease-in-out 0s 20 alternate}.monaco-editor .blockDecorations-container{pointer-events:none;position:absolute;top:0}.monaco-editor .blockDecorations-block{box-sizing:border-box;position:absolute}.monaco-editor .mwh{color:var(--vscode-editorWhitespace-foreground)!important;position:absolute}.monaco-editor .peekview-widget .head{box-sizing:border-box;display:flex;flex-wrap:nowrap;justify-content:space-between}.monaco-editor .peekview-widget .head .peekview-title{align-items:baseline;display:flex;font-size:13px;margin-left:20px;min-width:0;overflow:hidden;text-overflow:ellipsis}.monaco-editor .peekview-widget .head .peekview-title.clickable{cursor:pointer}.monaco-editor .peekview-widget .head .peekview-title .dirname:not(:empty){font-size:.9em;margin-left:.5em}.monaco-editor .peekview-widget .head .peekview-title .dirname,.monaco-editor .peekview-widget .head .peekview-title .filename,.monaco-editor .peekview-widget .head .peekview-title .meta{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-editor .peekview-widget .head .peekview-title .meta:not(:empty):before{content:"-";padding:0 .3em}.monaco-editor .peekview-widget .head .peekview-actions{flex:1;padding-right:2px;text-align:right}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar{display:inline-block}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar,.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar>.actions-container{height:100%}.monaco-editor .peekview-widget>.body{border-top:1px solid;position:relative}.monaco-editor .peekview-widget .head .peekview-title .codicon{align-self:center;margin-right:4px}.monaco-editor .peekview-widget .monaco-list .monaco-list-row.focused .codicon{color:inherit!important}:root{--vscode-sash-size:4px}.monaco-sash{position:absolute;touch-action:none;z-index:35}.monaco-sash.disabled{pointer-events:none}.monaco-sash.mac.vertical{cursor:col-resize}.monaco-sash.vertical.minimum{cursor:e-resize}.monaco-sash.vertical.maximum{cursor:w-resize}.monaco-sash.mac.horizontal{cursor:row-resize}.monaco-sash.horizontal.minimum{cursor:s-resize}.monaco-sash.horizontal.maximum{cursor:n-resize}.monaco-sash.disabled{cursor:default!important;pointer-events:none!important}.monaco-sash.vertical{cursor:ew-resize;height:100%;top:0;width:var(--vscode-sash-size)}.monaco-sash.horizontal{cursor:ns-resize;height:var(--vscode-sash-size);left:0;width:100%}.monaco-sash:not(.disabled)>.orthogonal-drag-handle{content:" ";cursor:all-scroll;display:block;height:calc(var(--vscode-sash-size)*2);position:absolute;width:calc(var(--vscode-sash-size)*2);z-index:100}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.start,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.end{cursor:nwse-resize}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.end,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.start{cursor:nesw-resize}.monaco-sash.vertical>.orthogonal-drag-handle.start{left:calc(var(--vscode-sash-size)*-.5);top:calc(var(--vscode-sash-size)*-1)}.monaco-sash.vertical>.orthogonal-drag-handle.end{bottom:calc(var(--vscode-sash-size)*-1);left:calc(var(--vscode-sash-size)*-.5)}.monaco-sash.horizontal>.orthogonal-drag-handle.start{left:calc(var(--vscode-sash-size)*-1);top:calc(var(--vscode-sash-size)*-.5)}.monaco-sash.horizontal>.orthogonal-drag-handle.end{right:calc(var(--vscode-sash-size)*-1);top:calc(var(--vscode-sash-size)*-.5)}.monaco-sash:before{background:#0000;content:"";height:100%;pointer-events:none;position:absolute;width:100%}.monaco-workbench:not(.reduce-motion) .monaco-sash:before{transition:background-color .1s ease-out}.monaco-sash.active:before,.monaco-sash.hover:before{background:var(--vscode-sash-hoverBorder)}.monaco-sash.vertical:before{left:calc(50% - var(--vscode-sash-hover-size)/2);width:var(--vscode-sash-hover-size)}.monaco-sash.horizontal:before{height:var(--vscode-sash-hover-size);top:calc(50% - var(--vscode-sash-hover-size)/2)}.pointer-events-disabled{pointer-events:none!important}.monaco-sash.debug{background:cyan}.monaco-sash.debug.disabled{background:#0ff3}.monaco-sash.debug:not(.disabled)>.orthogonal-drag-handle{background:red}.monaco-editor .zone-widget{position:absolute;z-index:10}.monaco-editor .zone-widget .zone-widget-container{border-bottom-style:solid;border-bottom-width:0;border-top-style:solid;border-top-width:0;position:relative}.monaco-dropdown{height:100%;padding:0}.monaco-dropdown>.dropdown-label{align-items:center;cursor:pointer;display:flex;height:100%;justify-content:center}.monaco-dropdown>.dropdown-label>.action-label.disabled{cursor:default}.monaco-dropdown-with-primary{border-radius:5px;display:flex!important;flex-direction:row}.monaco-dropdown-with-primary>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{font-size:12px;line-height:16px;margin-left:-3px;padding-left:0;padding-right:0}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label>.action-label{background-position:50%;background-repeat:no-repeat;background-size:16px;display:block}.monaco-action-bar .action-item.menu-entry .action-label.icon{background-position:50%;background-repeat:no-repeat;background-size:16px;height:16px;width:16px}.monaco-dropdown-with-default{border-radius:5px;display:flex!important;flex-direction:row}.monaco-dropdown-with-default>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-default>.action-container.menu-entry>.action-label.icon{background-position:50%;background-repeat:no-repeat;background-size:16px;height:16px;width:16px}.monaco-dropdown-with-default>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{font-size:12px;line-height:16px;margin-left:-3px;padding-left:0;padding-right:0}.monaco-dropdown-with-default>.dropdown-action-container>.monaco-dropdown>.dropdown-label>.action-label{background-position:50%;background-repeat:no-repeat;background-size:16px;display:block}.monaco-split-view2{height:100%;position:relative;width:100%}.monaco-split-view2>.sash-container{height:100%;pointer-events:none;position:absolute;width:100%}.monaco-split-view2>.sash-container>.monaco-sash{pointer-events:auto}.monaco-split-view2>.monaco-scrollable-element{height:100%;width:100%}.monaco-split-view2>.monaco-scrollable-element>.split-view-container{height:100%;position:relative;white-space:nowrap;width:100%}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view{position:absolute;white-space:normal}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view:not(.visible){display:none}.monaco-split-view2.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view{width:100%}.monaco-split-view2.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view{height:100%}.monaco-split-view2.separator-border>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{background-color:var(--separator-border);content:" ";left:0;pointer-events:none;position:absolute;top:0;z-index:5}.monaco-split-view2.separator-border.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{height:100%;width:1px}.monaco-split-view2.separator-border.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{height:1px;width:100%}.monaco-table{display:flex;flex-direction:column;height:100%;overflow:hidden;position:relative;white-space:nowrap;width:100%}.monaco-table>.monaco-split-view2{border-bottom:1px solid #0000}.monaco-table>.monaco-list{flex:1}.monaco-table-tr{display:flex;height:100%}.monaco-table-th{font-weight:700;height:100%;overflow:hidden;text-overflow:ellipsis;width:100%}.monaco-table-td,.monaco-table-th{box-sizing:border-box;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{border-left:1px solid #0000;content:"";left:calc(var(--vscode-sash-size)/2);position:absolute;width:0}.monaco-workbench:not(.reduce-motion) .monaco-table>.monaco-split-view2,.monaco-workbench:not(.reduce-motion) .monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{transition:border-color .2s ease-out}.monaco-custom-toggle{border:1px solid #0000;border-radius:3px;box-sizing:border-box;cursor:pointer;float:left;height:20px;margin-left:2px;overflow:hidden;padding:1px;user-select:none;-webkit-user-select:none;width:20px}.monaco-custom-toggle:hover{background-color:var(--vscode-inputOption-hoverBackground)}.hc-black .monaco-custom-toggle:hover,.hc-light .monaco-custom-toggle:hover{border:1px dashed var(--vscode-focusBorder)}.hc-black .monaco-custom-toggle,.hc-black .monaco-custom-toggle:hover,.hc-light .monaco-custom-toggle,.hc-light .monaco-custom-toggle:hover{background:none}.monaco-custom-toggle.monaco-checkbox{background-size:16px!important;border:1px solid #0000;border-radius:3px;height:18px;margin-left:0;margin-right:9px;opacity:1;padding:0;width:18px}.monaco-custom-toggle.monaco-checkbox:not(.checked):before{visibility:hidden}.monaco-inputbox{border-radius:2px;box-sizing:border-box;display:block;font-size:inherit;padding:0;position:relative}.monaco-inputbox>.ibwrapper>.input,.monaco-inputbox>.ibwrapper>.mirror{padding:4px 6px}.monaco-inputbox>.ibwrapper{height:100%;position:relative;width:100%}.monaco-inputbox>.ibwrapper>.input{border:none;box-sizing:border-box;color:inherit;display:inline-block;font-family:inherit;font-size:inherit;height:100%;line-height:inherit;resize:none;width:100%}.monaco-inputbox>.ibwrapper>input{text-overflow:ellipsis}.monaco-inputbox>.ibwrapper>textarea.input{display:block;outline:none;scrollbar-width:none}.monaco-inputbox>.ibwrapper>textarea.input::-webkit-scrollbar{display:none}.monaco-inputbox>.ibwrapper>textarea.input.empty{white-space:nowrap}.monaco-inputbox>.ibwrapper>.mirror{word-wrap:break-word;box-sizing:border-box;display:inline-block;left:0;position:absolute;top:0;visibility:hidden;white-space:pre-wrap;width:100%}.monaco-inputbox-container{text-align:right}.monaco-inputbox-container .monaco-inputbox-message{word-wrap:break-word;box-sizing:border-box;display:inline-block;font-size:12px;line-height:17px;margin-top:-1px;overflow:hidden;padding:.4em;text-align:left;width:100%}.monaco-inputbox .monaco-action-bar{position:absolute;right:2px;top:4px}.monaco-inputbox .monaco-action-bar .action-item{margin-left:2px}.monaco-inputbox .monaco-action-bar .action-item .codicon{background-repeat:no-repeat;height:16px;width:16px}.monaco-findInput{position:relative}.monaco-findInput .monaco-inputbox{font-size:13px;width:100%}.monaco-findInput>.controls{position:absolute;right:2px;top:3px}.vs .monaco-findInput.disabled{background-color:#e1e1e1}.vs-dark .monaco-findInput.disabled{background-color:#333}.hc-light .monaco-findInput.highlight-0 .controls,.monaco-findInput.highlight-0 .controls{animation:monaco-findInput-highlight-0 .1s linear 0s}.hc-light .monaco-findInput.highlight-1 .controls,.monaco-findInput.highlight-1 .controls{animation:monaco-findInput-highlight-1 .1s linear 0s}.hc-black .monaco-findInput.highlight-0 .controls,.vs-dark .monaco-findInput.highlight-0 .controls{animation:monaco-findInput-highlight-dark-0 .1s linear 0s}.hc-black .monaco-findInput.highlight-1 .controls,.vs-dark .monaco-findInput.highlight-1 .controls{animation:monaco-findInput-highlight-dark-1 .1s linear 0s}@keyframes monaco-findInput-highlight-0{0%{background:#fdff00cc}to{background:#0000}}@keyframes monaco-findInput-highlight-1{0%{background:#fdff00cc}99%{background:#0000}}@keyframes monaco-findInput-highlight-dark-0{0%{background:#ffffff70}to{background:#0000}}@keyframes monaco-findInput-highlight-dark-1{0%{background:#ffffff70}99%{background:#0000}}.monaco-tl-row{align-items:center;display:flex;height:100%;position:relative}.monaco-tl-row.disabled{cursor:default}.monaco-tl-indent{height:100%;left:16px;pointer-events:none;position:absolute;top:0}.hide-arrows .monaco-tl-indent{left:12px}.monaco-tl-indent>.indent-guide{border-left:1px solid #0000;box-sizing:border-box;display:inline-block;height:100%}.monaco-workbench:not(.reduce-motion) .monaco-tl-indent>.indent-guide{transition:border-color .1s linear}.monaco-tl-contents,.monaco-tl-twistie{height:100%}.monaco-tl-twistie{align-items:center;display:flex!important;flex-shrink:0;font-size:10px;justify-content:center;padding-right:6px;text-align:right;transform:translateX(3px);width:16px}.monaco-tl-contents{flex:1;overflow:hidden}.monaco-tl-twistie:before{border-radius:20px}.monaco-tl-twistie.collapsed:before{transform:rotate(-90deg)}.monaco-tl-twistie.codicon-tree-item-loading:before{animation:codicon-spin 1.25s steps(30) infinite}.monaco-tree-type-filter{border:1px solid var(--vscode-widget-border);border-bottom-left-radius:4px;border-bottom-right-radius:4px;display:flex;margin:0 6px;max-width:200px;padding:3px;position:absolute;top:0;z-index:100}.monaco-workbench:not(.reduce-motion) .monaco-tree-type-filter{transition:top .3s}.monaco-tree-type-filter.disabled{top:-40px!important}.monaco-tree-type-filter-grab{align-items:center;cursor:grab;display:flex!important;justify-content:center;margin-right:2px}.monaco-tree-type-filter-grab.grabbing{cursor:grabbing}.monaco-tree-type-filter-input{flex:1}.monaco-tree-type-filter-input .monaco-inputbox{height:23px}.monaco-tree-type-filter-input .monaco-inputbox>.ibwrapper>.input,.monaco-tree-type-filter-input .monaco-inputbox>.ibwrapper>.mirror{padding:2px 4px}.monaco-tree-type-filter-input .monaco-findInput>.controls{top:2px}.monaco-tree-type-filter-actionbar{margin-left:4px}.monaco-tree-type-filter-actionbar .monaco-action-bar .action-label{padding:2px}.monaco-editor .zone-widget .zone-widget-container.reference-zone-widget{border-bottom-width:1px;border-top-width:1px}.monaco-editor .reference-zone-widget .inline{display:inline-block;vertical-align:top}.monaco-editor .reference-zone-widget .messages{height:100%;padding:3em 0;text-align:center;width:100%}.monaco-editor .reference-zone-widget .ref-tree{background-color:var(--vscode-peekViewResult-background);color:var(--vscode-peekViewResult-lineForeground);line-height:23px}.monaco-editor .reference-zone-widget .ref-tree .reference{overflow:hidden;text-overflow:ellipsis}.monaco-editor .reference-zone-widget .ref-tree .reference-file{color:var(--vscode-peekViewResult-fileForeground);display:inline-flex;height:100%;width:100%}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .selected .reference-file{color:inherit!important}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows>.monaco-list-row.selected:not(.highlighted){background-color:var(--vscode-peekViewResult-selectionBackground);color:var(--vscode-peekViewResult-selectionForeground)!important}.monaco-editor .reference-zone-widget .ref-tree .reference-file .count{margin-left:auto;margin-right:12px}.monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight{background-color:var(--vscode-peekViewResult-matchHighlightBackground)}.monaco-editor .reference-zone-widget .preview .reference-decoration{background-color:var(--vscode-peekViewEditor-matchHighlightBackground);border:2px solid var(--vscode-peekViewEditor-matchHighlightBorder);box-sizing:border-box}.monaco-editor .reference-zone-widget .preview .monaco-editor .inputarea.ime-input,.monaco-editor .reference-zone-widget .preview .monaco-editor .monaco-editor-background{background-color:var(--vscode-peekViewEditor-background)}.monaco-editor .reference-zone-widget .preview .monaco-editor .margin{background-color:var(--vscode-peekViewEditorGutter-background)}.monaco-editor.hc-black .reference-zone-widget .ref-tree .reference-file,.monaco-editor.hc-light .reference-zone-widget .ref-tree .reference-file{font-weight:700}.monaco-editor.hc-black .reference-zone-widget .ref-tree .referenceMatch .highlight,.monaco-editor.hc-light .reference-zone-widget .ref-tree .referenceMatch .highlight{border:1px dotted var(--vscode-contrastActiveBorder,#0000);box-sizing:border-box}.monaco-count-badge{border-radius:11px;box-sizing:border-box;display:inline-block;font-size:11px;font-weight:400;line-height:11px;min-height:18px;min-width:18px;padding:3px 6px;text-align:center}.monaco-count-badge.long{border-radius:2px;line-height:normal;min-height:auto;padding:2px 3px}.monaco-icon-label{display:flex;overflow:hidden;text-overflow:ellipsis}.monaco-icon-label:before{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-position:0;background-repeat:no-repeat;background-size:16px;display:inline-block;flex-shrink:0;height:22px;line-height:inherit!important;padding-right:6px;vertical-align:top;width:16px}.monaco-icon-label-container.disabled{color:var(--vscode-disabledForeground)}.monaco-icon-label>.monaco-icon-label-container{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{color:inherit;white-space:pre}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name>.label-separator{margin:0 2px;opacity:.5}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{font-size:.9em;margin-left:.5em;opacity:.7;white-space:pre}.monaco-icon-label.nowrap>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{white-space:nowrap}.vs .monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{opacity:.95}.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-description-container>.label-description,.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{font-style:italic}.monaco-icon-label.deprecated{opacity:.66;text-decoration:line-through}.monaco-icon-label.italic:after{font-style:italic}.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-description-container>.label-description,.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{text-decoration:line-through}.monaco-icon-label:after{font-size:90%;font-weight:600;margin:auto 16px 0 5px;opacity:.75;text-align:center}.monaco-list:focus .selected .monaco-icon-label,.monaco-list:focus .selected .monaco-icon-label:after{color:inherit!important}.monaco-list-row.focused.selected .label-description,.monaco-list-row.selected .label-description{opacity:.8}.monaco-editor .goto-definition-link{color:var(--vscode-editorLink-activeForeground)!important;cursor:pointer;text-decoration:underline}.monaco-hover{animation:fadein .1s linear;box-sizing:border-box;cursor:default;line-height:1.5em;overflow:hidden;position:absolute;user-select:text;-webkit-user-select:text}.monaco-hover.hidden{display:none}.monaco-hover a:hover:not(.disabled){cursor:pointer}.monaco-hover .hover-contents:not(.html-hover-contents){padding:4px 8px}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents){word-wrap:break-word;max-width:var(--hover-maxWidth,500px)}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents) hr{min-width:100%}.monaco-hover .code,.monaco-hover h1,.monaco-hover h2,.monaco-hover h3,.monaco-hover h4,.monaco-hover h5,.monaco-hover h6,.monaco-hover p,.monaco-hover ul{margin:8px 0}.monaco-hover h1,.monaco-hover h2,.monaco-hover h3,.monaco-hover h4,.monaco-hover h5,.monaco-hover h6{line-height:1.1}.monaco-hover code{font-family:var(--monaco-monospace-font)}.monaco-hover hr{border-left:0;border-right:0;box-sizing:border-box;height:1px;margin:4px -8px -4px}.monaco-hover .code:first-child,.monaco-hover p:first-child,.monaco-hover ul:first-child{margin-top:0}.monaco-hover .code:last-child,.monaco-hover p:last-child,.monaco-hover ul:last-child{margin-bottom:0}.monaco-hover ol,.monaco-hover ul{padding-left:20px}.monaco-hover li>p{margin-bottom:0}.monaco-hover li>ul{margin-top:0}.monaco-hover code{border-radius:3px;padding:0 .4em}.monaco-hover .monaco-tokenized-source{white-space:pre-wrap}.monaco-hover .hover-row.status-bar{font-size:12px;line-height:22px}.monaco-hover .hover-row.status-bar .info{font-style:italic;padding:0 8px}.monaco-hover .hover-row.status-bar .actions{display:flex;padding:0 8px}.monaco-hover .hover-row.status-bar .actions .action-container{cursor:pointer;margin-right:16px}.monaco-hover .hover-row.status-bar .actions .action-container .action .icon{padding-right:4px}.monaco-hover .markdown-hover .hover-contents .codicon{color:inherit;font-size:inherit;vertical-align:middle}.monaco-hover .hover-contents a.code-link,.monaco-hover .hover-contents a.code-link:hover{color:inherit}.monaco-hover .hover-contents a.code-link:before{content:"("}.monaco-hover .hover-contents a.code-link:after{content:")"}.monaco-hover .hover-contents a.code-link>span{border-bottom:1px solid #0000;color:var(--vscode-textLink-foreground);text-decoration:underline;text-underline-position:under}.monaco-hover .hover-contents a.code-link>span:hover{color:var(--vscode-textLink-activeForeground)}.monaco-hover .markdown-hover .hover-contents:not(.code-hover-contents):not(.html-hover-contents) span{display:inline-block;margin-bottom:4px}.monaco-hover-content .action-container a{-webkit-user-select:none;user-select:none}.monaco-hover-content .action-container.disabled{cursor:default;opacity:.4;pointer-events:none}.monaco-editor .peekview-widget .head .peekview-title .severity-icon{display:inline-block;margin-right:4px;vertical-align:text-top}.monaco-editor .marker-widget{text-overflow:ellipsis;white-space:nowrap}.monaco-editor .marker-widget>.stale{font-style:italic;opacity:.6}.monaco-editor .marker-widget .title{display:inline-block;padding-right:5px}.monaco-editor .marker-widget .descriptioncontainer{padding:8px 12px 0 20px;position:absolute;user-select:text;-webkit-user-select:text;white-space:pre}.monaco-editor .marker-widget .descriptioncontainer .message{display:flex;flex-direction:column}.monaco-editor .marker-widget .descriptioncontainer .message .details{padding-left:6px}.monaco-editor .marker-widget .descriptioncontainer .message .source,.monaco-editor .marker-widget .descriptioncontainer .message span.code{opacity:.6}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link{color:inherit;opacity:.6}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:before{content:"("}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:after{content:")"}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link>span{border-bottom:1px solid #0000;color:var(--vscode-textLink-foreground);color:var(--vscode-textLink-activeForeground);text-decoration:underline;text-underline-position:under}.monaco-editor .marker-widget .descriptioncontainer .filename{cursor:pointer}.extension-editor .codicon.codicon-error,.extensions-viewlet>.extensions .codicon.codicon-error,.markers-panel .marker-icon .codicon.codicon-error,.markers-panel .marker-icon.error,.monaco-editor .zone-widget .codicon.codicon-error,.preferences-editor .codicon.codicon-error,.text-search-provider-messages .providerMessage .codicon.codicon-error{color:var(--vscode-problemsErrorIcon-foreground)}.extension-editor .codicon.codicon-warning,.extensions-viewlet>.extensions .codicon.codicon-warning,.markers-panel .marker-icon .codicon.codicon-warning,.markers-panel .marker-icon.warning,.monaco-editor .zone-widget .codicon.codicon-warning,.preferences-editor .codicon.codicon-warning,.text-search-provider-messages .providerMessage .codicon.codicon-warning{color:var(--vscode-problemsWarningIcon-foreground)}.extension-editor .codicon.codicon-info,.extensions-viewlet>.extensions .codicon.codicon-info,.markers-panel .marker-icon .codicon.codicon-info,.markers-panel .marker-icon.info,.monaco-editor .zone-widget .codicon.codicon-info,.preferences-editor .codicon.codicon-info,.text-search-provider-messages .providerMessage .codicon.codicon-info{color:var(--vscode-problemsInfoIcon-foreground)}.monaco-editor .inlineSuggestionsHints.withBorder{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground);z-index:39}.monaco-editor .inlineSuggestionsHints a,.monaco-editor .inlineSuggestionsHints a:hover{color:var(--vscode-foreground)}.monaco-editor .inlineSuggestionsHints .keybinding{display:flex;margin-left:4px;opacity:.6}.monaco-editor .inlineSuggestionsHints .keybinding .monaco-keybinding-key{font-size:8px;padding:2px 3px}.monaco-editor .inlineSuggestionsHints .custom-actions .action-item:nth-child(2) a{display:flex;justify-content:center;min-width:19px}.monaco-editor .inlineSuggestionStatusBarItemLabel{margin-right:2px}.monaco-toolbar{height:100%}.monaco-toolbar .toolbar-toggle-more{display:inline-block;padding:0}.monaco-editor .hoverHighlight{background-color:var(--vscode-editor-hoverHighlightBackground)}.monaco-editor .monaco-hover{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);border-radius:3px;color:var(--vscode-editorHoverWidget-foreground)}.monaco-editor .monaco-hover a{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-hover a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .monaco-hover .hover-row .actions{background-color:var(--vscode-editorHoverWidget-statusBarBackground)}.monaco-editor .monaco-hover code{background-color:var(--vscode-textCodeBlock-background)}.monaco-editor .iPadShowKeyboard{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTQ4LjAzNiA0LjAxSDQuMDA4VjMyLjAzaDQ0LjAyOFY0LjAxWk00LjAwOC4wMDhBNC4wMDMgNC4wMDMgMCAwIDAgLjAwNSA0LjAxVjMyLjAzYTQuMDAzIDQuMDAzIDAgMCAwIDQuMDAzIDQuMDAyaDQ0LjAyOGE0LjAwMyA0LjAwMyAwIDAgMCA0LjAwMy00LjAwMlY0LjAxQTQuMDAzIDQuMDAzIDAgMCAwIDQ4LjAzNi4wMDhINC4wMDhaTTguMDEgOC4wMTNoNC4wMDN2NC4wMDNIOC4wMVY4LjAxM1ptMTIuMDA4IDBoLTQuMDAydjQuMDAzaDQuMDAyVjguMDEzWm00LjAwMyAwaDQuMDAydjQuMDAzaC00LjAwMlY4LjAxM1ptMTIuMDA4IDBoLTQuMDAzdjQuMDAzaDQuMDAzVjguMDEzWm00LjAwMiAwaDQuMDAzdjQuMDAzSDQwLjAzVjguMDEzWm0tMjQuMDE1IDguMDA1SDguMDF2NC4wMDNoOC4wMDZ2LTQuMDAzWm00LjAwMiAwaDQuMDAzdjQuMDAzaC00LjAwM3YtNC4wMDNabTEyLjAwOCAwaC00LjAwM3Y0LjAwM2g0LjAwM3YtNC4wMDNabTEyLjAwOCAwdjQuMDAzaC04LjAwNXYtNC4wMDNoOC4wMDVabS0zMi4wMjEgOC4wMDVIOC4wMXY0LjAwM2g0LjAwM3YtNC4wMDNabTQuMDAzIDBoMjAuMDEzdjQuMDAzSDE2LjAxNnYtNC4wMDNabTI4LjAxOCAwSDQwLjAzdjQuMDAzaDQuMDAzdi00LjAwM1oiIGZpbGw9IiM0MjQyNDIiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUzdjM2SDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+") 50% no-repeat;border:4px solid #f6f6f6;border-radius:4px;height:36px;margin:0;min-height:0;min-width:0;overflow:hidden;padding:0;position:absolute;resize:none;width:58px}.monaco-editor.vs-dark .iPadShowKeyboard{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTQ4LjAzNiA0LjAxSDQuMDA4VjMyLjAzaDQ0LjAyOFY0LjAxWk00LjAwOC4wMDhBNC4wMDMgNC4wMDMgMCAwIDAgLjAwNSA0LjAxVjMyLjAzYTQuMDAzIDQuMDAzIDAgMCAwIDQuMDAzIDQuMDAyaDQ0LjAyOGE0LjAwMyA0LjAwMyAwIDAgMCA0LjAwMy00LjAwMlY0LjAxQTQuMDAzIDQuMDAzIDAgMCAwIDQ4LjAzNi4wMDhINC4wMDhaTTguMDEgOC4wMTNoNC4wMDN2NC4wMDNIOC4wMVY4LjAxM1ptMTIuMDA4IDBoLTQuMDAydjQuMDAzaDQuMDAyVjguMDEzWm00LjAwMyAwaDQuMDAydjQuMDAzaC00LjAwMlY4LjAxM1ptMTIuMDA4IDBoLTQuMDAzdjQuMDAzaDQuMDAzVjguMDEzWm00LjAwMiAwaDQuMDAzdjQuMDAzSDQwLjAzVjguMDEzWm0tMjQuMDE1IDguMDA1SDguMDF2NC4wMDNoOC4wMDZ2LTQuMDAzWm00LjAwMiAwaDQuMDAzdjQuMDAzaC00LjAwM3YtNC4wMDNabTEyLjAwOCAwaC00LjAwM3Y0LjAwM2g0LjAwM3YtNC4wMDNabTEyLjAwOCAwdjQuMDAzaC04LjAwNXYtNC4wMDNoOC4wMDVabS0zMi4wMjEgOC4wMDVIOC4wMXY0LjAwM2g0LjAwM3YtNC4wMDNabTQuMDAzIDBoMjAuMDEzdjQuMDAzSDE2LjAxNnYtNC4wMDNabTI4LjAxOCAwSDQwLjAzdjQuMDAzaDQuMDAzdi00LjAwM1oiIGZpbGw9IiNDNUM1QzUiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUzdjM2SDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+") 50% no-repeat;border:4px solid #252526}.monaco-editor .suggest-preview-additional-widget{white-space:nowrap}.monaco-editor .suggest-preview-additional-widget .content-spacer{color:#0000;white-space:pre}.monaco-editor .suggest-preview-additional-widget .button{cursor:pointer;display:inline-block;text-decoration:underline;text-underline-position:under}.monaco-editor .ghost-text-hidden{font-size:0;opacity:0}.monaco-editor .ghost-text-decoration,.monaco-editor .suggest-preview-text .ghost-text{font-style:italic}.monaco-editor .inline-completion-text-to-replace{text-decoration:underline;text-underline-position:under}.monaco-editor .ghost-text-decoration,.monaco-editor .ghost-text-decoration-preview,.monaco-editor .suggest-preview-text .ghost-text{background-color:var(--vscode-editorGhostText-background);border:1px solid var(--vscode-editorGhostText-border);color:var(--vscode-editorGhostText-foreground)!important}.monaco-editor .snippet-placeholder{background-color:var(--vscode-editor-snippetTabstopHighlightBackground,#0000);min-width:2px;outline-color:var(--vscode-editor-snippetTabstopHighlightBorder,#0000);outline-style:solid;outline-width:1px}.monaco-editor .finish-snippet-placeholder{background-color:var(--vscode-editor-snippetFinalTabstopHighlightBackground,#0000);outline-color:var(--vscode-editor-snippetFinalTabstopHighlightBorder,#0000);outline-style:solid;outline-width:1px}.monaco-editor .suggest-widget{border-radius:3px;display:flex;flex-direction:column;width:430px;z-index:40}.monaco-editor .suggest-widget.message{align-items:center;flex-direction:row}.monaco-editor .suggest-details,.monaco-editor .suggest-widget{background-color:var(--vscode-editorSuggestWidget-background);border-color:var(--vscode-editorSuggestWidget-border);border-style:solid;border-width:1px;flex:0 1 auto;width:100%}.monaco-editor.hc-black .suggest-details,.monaco-editor.hc-black .suggest-widget,.monaco-editor.hc-light .suggest-details,.monaco-editor.hc-light .suggest-widget{border-width:2px}.monaco-editor .suggest-widget .suggest-status-bar{border-top:1px solid var(--vscode-editorSuggestWidget-border);box-sizing:border-box;display:none;flex-flow:row nowrap;font-size:80%;justify-content:space-between;overflow:hidden;padding:0 4px;width:100%}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar{display:flex}.monaco-editor .suggest-widget .suggest-status-bar .left{padding-right:8px}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-label{color:var(--vscode-editorSuggestWidgetStatus-foreground)}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label{margin-right:0}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label:after{content:", ";margin-right:.3em}.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore,.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget.with-status-bar:not(.docs-side) .monaco-list .monaco-list-row:hover>.contents>.main>.right.can-expand-details>.details-label{width:100%}.monaco-editor .suggest-widget>.message{padding-left:22px}.monaco-editor .suggest-widget>.tree{height:100%;width:100%}.monaco-editor .suggest-widget .monaco-list{user-select:none;-webkit-user-select:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row{background-position:2px 2px;background-repeat:no-repeat;-mox-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:flex;padding-right:10px;touch-action:none;white-space:nowrap}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused{color:var(--vscode-editorSuggestWidget-selectedForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused .codicon{color:var(--vscode-editorSuggestWidget-selectedIconForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents{flex:1;height:100%;overflow:hidden;padding-left:2px}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main{display:flex;justify-content:space-between;overflow:hidden;text-overflow:ellipsis;white-space:pre}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{display:flex}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.focused)>.contents>.main .monaco-icon-label{color:var(--vscode-editorSuggestWidget-foreground)}.monaco-editor .suggest-widget:not(.frozen) .monaco-highlighted-label .highlight{font-weight:700}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main .monaco-highlighted-label .highlight{color:var(--vscode-editorSuggestWidget-highlightForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused>.contents>.main .monaco-highlighted-label .highlight{color:var(--vscode-editorSuggestWidget-focusHighlightForeground)}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:before{color:inherit;cursor:pointer;font-size:14px;opacity:1}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close{position:absolute;right:2px;top:6px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close:hover,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:hover{opacity:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{opacity:.7}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.signature-label{opacity:.6;overflow:hidden;text-overflow:ellipsis}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.qualifier-label{align-self:center;font-size:85%;line-height:normal;margin-left:12px;opacity:.4;overflow:hidden;text-overflow:ellipsis}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{font-size:85%;margin-left:1.1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label>.monaco-tokenized-source{display:inline}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.right>.details-label,.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused:not(.string-label)>.contents>.main>.right>.details-label,.monaco-editor .suggest-widget:not(.shows-details) .monaco-list .monaco-list-row.focused>.contents>.main>.right>.details-label{display:inline}.monaco-editor .suggest-widget:not(.docs-side) .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right.can-expand-details>.details-label{width:calc(100% - 26px)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left{flex-grow:1;flex-shrink:1;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.monaco-icon-label{flex-shrink:0}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.left>.monaco-icon-label{max-width:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.left>.monaco-icon-label{flex-shrink:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{flex-shrink:4;max-width:70%;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:inline-block;height:18px;position:absolute;right:10px;visibility:hidden;width:18px}.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none!important}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore{display:inline-block}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right>.readMore{visibility:visible}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated{opacity:.66;text-decoration:unset}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated>.monaco-icon-label-container>.monaco-icon-name-container{text-decoration:line-through}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label:before{height:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon{background-position:50%;background-repeat:no-repeat;background-size:80%;display:block;height:16px;margin-left:2px;width:16px}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.hide{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon{align-items:center;display:flex;margin-right:4px}.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .icon,.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .suggest-icon:before{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.customcolor .colorspan{border:.1em solid #000;display:inline-block;height:.7em;margin:0 0 0 .3em;width:.7em}.monaco-editor .suggest-details-container{z-index:41}.monaco-editor .suggest-details{color:var(--vscode-editorSuggestWidget-foreground);cursor:default;display:flex;flex-direction:column}.monaco-editor .suggest-details.focused{border-color:var(--vscode-focusBorder)}.monaco-editor .suggest-details a{color:var(--vscode-textLink-foreground)}.monaco-editor .suggest-details a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .suggest-details code{background-color:var(--vscode-textCodeBlock-background)}.monaco-editor .suggest-details.no-docs{display:none}.monaco-editor .suggest-details>.monaco-scrollable-element{flex:1}.monaco-editor .suggest-details>.monaco-scrollable-element>.body{box-sizing:border-box;height:100%;width:100%}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type{flex:2;margin:0 24px 0 0;opacity:.7;overflow:hidden;padding:4px 0 12px 5px;text-overflow:ellipsis;white-space:pre}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type.auto-wrap{white-space:normal;word-break:break-all}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs{margin:0;padding:4px 5px;white-space:pre-wrap}.monaco-editor .suggest-details.no-type>.monaco-scrollable-element>.body>.docs{margin-right:24px;overflow:hidden}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs{min-height:calc(1rem + 8px);padding:0;white-space:normal}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div,.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>span:not(:empty){padding:4px 5px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:first-child{margin-top:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:last-child{margin-bottom:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .monaco-tokenized-source{white-space:pre}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs .code{word-wrap:break-word;white-space:pre-wrap}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .codicon{vertical-align:sub}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>p:empty{display:none}.monaco-editor .suggest-details code{border-radius:3px;padding:0 .4em}.monaco-editor .suggest-details ol,.monaco-editor .suggest-details ul{padding-left:20px}.monaco-editor .suggest-details p code{font-family:var(--monaco-monospace-font)}.monaco-editor .tokens-inspect-widget{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground);padding:10px;user-select:text;-webkit-user-select:text;z-index:50}.monaco-editor.hc-black .tokens-inspect-widget,.monaco-editor.hc-light .tokens-inspect-widget{border-width:2px}.monaco-editor .tokens-inspect-widget .tokens-inspect-separator{background-color:var(--vscode-editorHoverWidget-border);border:0;height:1px}.monaco-editor .tokens-inspect-widget .tm-token{font-family:var(--monaco-monospace-font)}.monaco-editor .tokens-inspect-widget .tm-token-length{float:right;font-size:60%;font-weight:400}.monaco-editor .tokens-inspect-widget .tm-metadata-table{width:100%}.monaco-editor .tokens-inspect-widget .tm-metadata-value{font-family:var(--monaco-monospace-font);text-align:right}.monaco-editor .tokens-inspect-widget .tm-token-type{font-family:var(--monaco-monospace-font)}.monaco-editor .linked-editing-decoration{background-color:var(--vscode-editor-linkedEditingBackground);min-width:1px}.monaco-editor .findOptionsWidget{background-color:var(--vscode-editorWidget-background);border:2px solid var(--vscode-contrastBorder);box-shadow:0 0 8px 2px var(--vscode-widget-shadow);color:var(--vscode-editorWidget-foreground)}.monaco-editor .find-widget{border-bottom-left-radius:4px;border-bottom-right-radius:4px;box-sizing:border-box;height:33px;line-height:19px;overflow:hidden;padding:0 4px;position:absolute;transform:translateY(calc(-100% - 10px));transition:transform .2s linear;z-index:35}.monaco-workbench.reduce-motion .monaco-editor .find-widget{transition:transform 0ms linear}.monaco-editor .find-widget textarea{margin:0}.monaco-editor .find-widget.hiddenEditor{display:none}.monaco-editor .find-widget.replaceToggled>.replace-part{display:flex}.monaco-editor .find-widget.visible{transform:translateY(0)}.monaco-editor .find-widget .monaco-inputbox.synthetic-focus{outline:1px solid -webkit-focus-ring-color;outline-offset:-1px}.monaco-editor .find-widget .monaco-inputbox .input{background-color:initial;min-height:0}.monaco-editor .find-widget .monaco-findInput .input{font-size:13px}.monaco-editor .find-widget>.find-part,.monaco-editor .find-widget>.replace-part{display:flex;font-size:12px;margin:3px 25px 0 17px}.monaco-editor .find-widget>.find-part .monaco-inputbox,.monaco-editor .find-widget>.replace-part .monaco-inputbox{min-height:25px}.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-right:22px}.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.mirror,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-bottom:2px;padding-top:2px}.monaco-editor .find-widget>.find-part .find-actions,.monaco-editor .find-widget>.replace-part .replace-actions{align-items:center;display:flex;height:25px}.monaco-editor .find-widget .monaco-findInput{display:flex;flex:1;vertical-align:middle}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element{width:100%}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element .scrollbar.vertical{opacity:0}.monaco-editor .find-widget .matchesCount{box-sizing:border-box;display:flex;flex:initial;height:25px;line-height:23px;margin:0 0 0 3px;padding:2px 0 0 2px;text-align:center;vertical-align:middle}.monaco-editor .find-widget .button{align-items:center;background-position:50%;background-repeat:no-repeat;border-radius:5px;cursor:pointer;display:flex;flex:initial;height:16px;justify-content:center;margin-left:3px;padding:3px;width:16px}.monaco-editor .find-widget .codicon-find-selection{border-radius:5px;height:22px;padding:3px;width:22px}.monaco-editor .find-widget .button.left{margin-left:0;margin-right:3px}.monaco-editor .find-widget .button.wide{padding:1px 6px;top:-1px;width:auto}.monaco-editor .find-widget .button.toggle{border-radius:0;box-sizing:border-box;height:100%;left:3px;position:absolute;top:0;width:18px}.monaco-editor .find-widget .button.toggle.disabled{display:none}.monaco-editor .find-widget .disabled{color:var(--vscode-disabledForeground);cursor:default}.monaco-editor .find-widget>.replace-part{display:none}.monaco-editor .find-widget>.replace-part>.monaco-findInput{display:flex;flex:auto;flex-grow:0;flex-shrink:0;position:relative;vertical-align:middle}.monaco-editor .find-widget>.replace-part>.monaco-findInput>.controls{position:absolute;right:2px;top:3px}.monaco-editor .find-widget.reduced-find-widget .matchesCount{display:none}.monaco-editor .find-widget.narrow-find-widget{max-width:257px!important}.monaco-editor .find-widget.collapsed-find-widget{max-width:170px!important}.monaco-editor .find-widget.collapsed-find-widget .button.next,.monaco-editor .find-widget.collapsed-find-widget .button.previous,.monaco-editor .find-widget.collapsed-find-widget .button.replace,.monaco-editor .find-widget.collapsed-find-widget .button.replace-all,.monaco-editor .find-widget.collapsed-find-widget>.find-part .monaco-findInput .controls{display:none}.monaco-editor .findMatch{animation-duration:0;animation-name:inherit!important}.monaco-editor .find-widget .monaco-sash{left:0!important}.monaco-editor.hc-black .find-widget .button:before{left:2px;position:relative;top:1px}.monaco-editor .find-widget>.button.codicon-widget-close{position:absolute;right:4px;top:5px}.monaco-editor .focused .selectionHighlight{background-color:var(--vscode-editor-selectionHighlightBackground);border:1px solid var(--vscode-editor-selectionHighlightBorder);box-sizing:border-box}.monaco-editor.hc-black .focused .selectionHighlight,.monaco-editor.hc-light .focused .selectionHighlight{border-style:dotted}.monaco-editor .wordHighlight{background-color:var(--vscode-editor-wordHighlightBackground);border:1px solid var(--vscode-editor-wordHighlightBorder);box-sizing:border-box}.monaco-editor.hc-black .wordHighlight,.monaco-editor.hc-light .wordHighlight{border-style:dotted}.monaco-editor .wordHighlightStrong{background-color:var(--vscode-editor-wordHighlightStrongBackground);border:1px solid var(--vscode-editor-wordHighlightStrongBorder);box-sizing:border-box}.monaco-editor.hc-black .wordHighlightStrong,.monaco-editor.hc-light .wordHighlightStrong{border-style:dotted}.monaco-editor .wordHighlightText{background-color:var(--vscode-editor-wordHighlightTextBackground);border:1px solid var(--vscode-editor-wordHighlightTextBorder);box-sizing:border-box}.monaco-editor.hc-black .wordHighlightText,.monaco-editor.hc-light .wordHighlightText{border-style:dotted}.monaco-editor .sticky-line{color:var(--vscode-editorLineNumber-foreground);display:inline-block;overflow:hidden;white-space:nowrap}.monaco-editor .sticky-line-number{float:left;text-align:right}.monaco-editor .sticky-line-root{background-color:inherit;overflow:hidden;white-space:nowrap;width:100%}.monaco-editor.hc-black .sticky-widget,.monaco-editor.hc-light .sticky-widget{border-bottom:1px solid var(--vscode-contrastBorder)}.monaco-editor .sticky-line-root:hover{background-color:var(--vscode-editorStickyScrollHover-background);cursor:pointer}.monaco-editor .sticky-widget{background-color:var(--vscode-editorStickyScroll-background);box-shadow:var(--vscode-scrollbar-shadow) 0 3px 2px -2px;width:100%;z-index:4}.monaco-editor .sticky-widget.peek{background-color:var(--vscode-peekViewEditorStickyScroll-background)}.monaco-editor .margin-view-overlays .codicon-folding-collapsed,.monaco-editor .margin-view-overlays .codicon-folding-expanded,.monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,.monaco-editor .margin-view-overlays .codicon-folding-manual-expanded{align-items:center;cursor:pointer;display:flex;font-size:140%;justify-content:center;margin-left:2px;opacity:0;transition:opacity .5s}.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-collapsed,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-expanded,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-expanded{transition:initial}.monaco-editor .margin-view-overlays .codicon.alwaysShowFoldIcons,.monaco-editor .margin-view-overlays .codicon.codicon-folding-collapsed,.monaco-editor .margin-view-overlays .codicon.codicon-folding-manual-collapsed,.monaco-editor .margin-view-overlays:hover .codicon{opacity:1}.monaco-editor .inline-folded:after{color:grey;content:"\22EF";cursor:pointer;display:inline;line-height:1em;margin:.1em .2em 0}.monaco-editor .folded-background{background-color:var(--vscode-editor-foldBackground)}.monaco-editor .cldr.codicon.codicon-folding-collapsed,.monaco-editor .cldr.codicon.codicon-folding-expanded,.monaco-editor .cldr.codicon.codicon-folding-manual-collapsed,.monaco-editor .cldr.codicon.codicon-folding-manual-expanded{color:var(--vscode-editorGutter-foldingControlForeground)!important}.monaco-editor .unicode-highlight{background-color:var(--vscode-editorUnicodeHighlight-background);border:1px solid var(--vscode-editorUnicodeHighlight-border);box-sizing:border-box}.editor-banner{background:var(--vscode-banner-background);box-sizing:border-box;cursor:default;display:flex;font-size:12px;height:26px;overflow:visible;width:100%}.editor-banner .icon-container{align-items:center;display:flex;flex-shrink:0;padding:0 6px 0 10px}.editor-banner .icon-container.custom-icon{background-position:50%;background-repeat:no-repeat;background-size:16px;margin:0 6px 0 10px;padding:0;width:16px}.editor-banner .message-container{align-items:center;display:flex;line-height:26px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.editor-banner .message-container p{margin-block-end:0;margin-block-start:0}.editor-banner .message-actions-container{flex-grow:1;flex-shrink:0;line-height:26px;margin:0 4px}.editor-banner .message-actions-container a.monaco-button{margin:2px 8px;padding:0 12px;width:inherit}.editor-banner .message-actions-container a{margin-left:12px;padding:3px;text-decoration:underline}.editor-banner .action-container{padding:0 10px 0 6px}.editor-banner{background-color:var(--vscode-banner-background)}.editor-banner,.editor-banner .action-container .codicon,.editor-banner .message-actions-container .monaco-link{color:var(--vscode-banner-foreground)}.editor-banner .icon-container .codicon{color:var(--vscode-banner-iconForeground)}.monaco-link{color:var(--vscode-textLink-foreground)}.monaco-link:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor{--monaco-monospace-font:"SF Mono",Monaco,Menlo,Consolas,"Ubuntu Mono","Liberation Mono","DejaVu Sans Mono","Courier New",monospace;font-family:-apple-system,BlinkMacSystemFont,Segoe WPC,Segoe UI,HelveticaNeue-Light,system-ui,Ubuntu,Droid Sans,sans-serif}.monaco-editor.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.hc-light .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-menu .monaco-action-bar.vertical .action-item .action-menu-item:focus .action-label{stroke-width:1.2px}.monaco-hover p{margin:0}.monaco-aria-container{clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute!important;top:0;width:1px}.monaco-diff-editor .diffOverview{z-index:9}.monaco-diff-editor .diffOverview .diffViewport{z-index:10}.monaco-diff-editor.vs .diffOverview{background:#00000008}.monaco-diff-editor.vs-dark .diffOverview{background:#ffffff03}.monaco-scrollable-element.modified-in-monaco-diff-editor.vs .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.vs-dark .scrollbar{background:#0000}.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-black .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-light .scrollbar{background:none}.monaco-scrollable-element.modified-in-monaco-diff-editor .slider{z-index:10}.modified-in-monaco-diff-editor .slider.active{background:#ababab66}.modified-in-monaco-diff-editor.hc-black .slider.active,.modified-in-monaco-diff-editor.hc-light .slider.active{background:none}.monaco-diff-editor .delete-sign,.monaco-diff-editor .insert-sign,.monaco-editor .delete-sign,.monaco-editor .insert-sign{align-items:center;display:flex!important;font-size:11px!important;opacity:.7!important}.monaco-diff-editor.hc-black .delete-sign,.monaco-diff-editor.hc-black .insert-sign,.monaco-diff-editor.hc-light .delete-sign,.monaco-diff-editor.hc-light .insert-sign,.monaco-editor.hc-black .delete-sign,.monaco-editor.hc-black .insert-sign,.monaco-editor.hc-light .delete-sign,.monaco-editor.hc-light .insert-sign{opacity:1}.monaco-editor .inline-added-margin-view-zone,.monaco-editor .inline-deleted-margin-view-zone{text-align:right}.monaco-editor .arrow-revert-change{position:absolute;z-index:10}.monaco-editor .arrow-revert-change:hover{cursor:pointer}.monaco-editor .view-zones .view-lines .view-line span{display:inline-block}.monaco-editor .margin-view-zones .lightbulb-glyph:hover{cursor:pointer}.monaco-diff-editor .char-insert,.monaco-editor .char-insert{background-color:var(--vscode-diffEditor-insertedTextBackground)}.monaco-diff-editor .line-insert,.monaco-editor .line-insert{background-color:var(--vscode-diffEditor-insertedLineBackground,--vscode-diffEditor-insertedTextBackground)}.monaco-editor .char-insert,.monaco-editor .line-insert{border:1px solid var(--vscode-diffEditor-insertedTextBorder);box-sizing:border-box}.monaco-editor.hc-black .char-insert,.monaco-editor.hc-black .line-insert,.monaco-editor.hc-light .char-insert,.monaco-editor.hc-light .line-insert{border-style:dashed}.monaco-editor .char-delete,.monaco-editor .line-delete{border:1px solid var(--vscode-diffEditor-removedTextBorder);box-sizing:border-box}.monaco-editor.hc-black .char-delete,.monaco-editor.hc-black .line-delete,.monaco-editor.hc-light .char-delete,.monaco-editor.hc-light .line-delete{border-style:dashed}.monaco-diff-editor .gutter-insert,.monaco-editor .gutter-insert,.monaco-editor .inline-added-margin-view-zone{background-color:var(--vscode-diffEditorGutter-insertedLineBackground,--vscode-diffEditor-insertedLineBackground,--vscode-diffEditor-insertedTextBackground)}.monaco-diff-editor .char-delete,.monaco-editor .char-delete{background-color:var(--vscode-diffEditor-removedTextBackground)}.monaco-diff-editor .line-delete,.monaco-editor .line-delete{background-color:var(--vscode-diffEditor-removedLineBackground,--vscode-diffEditor-removedTextBackground)}.monaco-diff-editor .gutter-delete,.monaco-editor .gutter-delete,.monaco-editor .inline-deleted-margin-view-zone{background-color:var(--vscode-diffEditorGutter-removedLineBackground,--vscode-diffEditor-removedLineBackground,--vscode-diffEditor-removedTextBackground)}.monaco-diff-editor.side-by-side .editor.modified{border-left:1px solid var(--vscode-diffEditor-border);box-shadow:-6px 0 5px -5px var(--vscode-scrollbar-shadow)}.monaco-diff-editor .diffViewport{background:var(--vscode-scrollbarSlider-background)}.monaco-diff-editor .diffViewport:hover{background:var(--vscode-scrollbarSlider-hoverBackground)}.monaco-diff-editor .diffViewport:active{background:var(--vscode-scrollbarSlider-activeBackground)}.monaco-diff-editor .diff-review-line-number{color:var(--vscode-editorLineNumber-foreground);display:inline-block;text-align:right}.monaco-diff-editor .diff-review{position:absolute;user-select:none;-webkit-user-select:none;z-index:99}.monaco-diff-editor .diff-review-summary{padding-left:10px}.monaco-diff-editor .diff-review-shadow{box-shadow:var(--vscode-scrollbar-shadow) 0 -6px 6px -6px inset;position:absolute}.monaco-diff-editor .diff-review-row{white-space:pre}.monaco-diff-editor .diff-review-table{display:table;min-width:100%}.monaco-diff-editor .diff-review-row{display:table-row;width:100%}.monaco-diff-editor .diff-review-spacer{display:inline-block;vertical-align:middle;width:10px}.monaco-diff-editor .diff-review-spacer>.codicon{font-size:9px!important}.monaco-diff-editor .diff-review-actions{display:inline-block;position:absolute;right:10px;top:2px;z-index:100}.monaco-diff-editor .diff-review-actions .action-label{height:16px;margin:2px 0;width:16px}.context-view{position:absolute}.context-view.fixed{all:initial;color:inherit;font-family:inherit;font-size:13px;position:fixed}.quick-input-widget{font-size:13px}.quick-input-widget .monaco-highlighted-label .highlight{color:#0066bf}.vs .quick-input-widget .monaco-list-row.focused .monaco-highlighted-label .highlight{color:#9dddff}.vs-dark .quick-input-widget .monaco-highlighted-label .highlight{color:#0097fb}.hc-black .quick-input-widget .monaco-highlighted-label .highlight{color:#f38518}.hc-light .quick-input-widget .monaco-highlighted-label .highlight{color:#0f4a85}.monaco-keybinding>.monaco-keybinding-key{background-color:#ddd6;border:1px solid;border-color:#ccc6 #ccc6 #bbb6;box-shadow:inset 0 -1px 0 #bbb6;color:#555}.hc-black .monaco-keybinding>.monaco-keybinding-key{background-color:initial;border:1px solid #6fc3df;box-shadow:none;color:#fff}.hc-light .monaco-keybinding>.monaco-keybinding-key{background-color:initial;border:1px solid #0f4a85;box-shadow:none;color:#292929}.vs-dark .monaco-keybinding>.monaco-keybinding-key{background-color:#8080802b;border:1px solid;border-color:#3339 #3339 #4449;box-shadow:inset 0 -1px 0 #4449;color:#ccc}.monaco-progress-container{height:5px;overflow:hidden;width:100%}.monaco-progress-container .progress-bit{display:none;height:5px;left:0;position:absolute;width:2%}.monaco-progress-container.active .progress-bit{display:inherit}.monaco-progress-container.discrete .progress-bit{left:0;transition:width .1s linear}.monaco-progress-container.discrete.done .progress-bit{width:100%}.monaco-progress-container.infinite .progress-bit{animation-duration:4s;animation-iteration-count:infinite;animation-name:progress;animation-timing-function:linear;transform:translateZ(0)}.monaco-progress-container.infinite.infinite-long-running .progress-bit{animation-timing-function:steps(100)}@keyframes progress{0%{transform:translateX(0) scaleX(1)}50%{transform:translateX(2500%) scaleX(3)}to{transform:translateX(4900%) scaleX(1)}}.quick-input-widget{-webkit-app-region:no-drag;border-radius:6px;left:50%;margin-left:-300px;position:absolute;width:600px;z-index:2550}.quick-input-titlebar{align-items:center;border-top-left-radius:5px;border-top-right-radius:5px;display:flex}.quick-input-left-action-bar{display:flex;flex:1;margin-left:4px}.quick-input-title{overflow:hidden;padding:3px 0;text-align:center;text-overflow:ellipsis}.quick-input-right-action-bar{display:flex;flex:1;margin-right:4px}.quick-input-right-action-bar>.actions-container{justify-content:flex-end}.quick-input-titlebar .monaco-action-bar .action-label.codicon{background-position:50%;background-repeat:no-repeat;padding:2px}.quick-input-description{margin:6px 6px 6px 11px}.quick-input-header .quick-input-description{flex:1;margin:4px 2px}.quick-input-header{display:flex;padding:8px 6px 6px}.quick-input-widget.hidden-input .quick-input-header{margin-bottom:0;padding:0}.quick-input-and-message{display:flex;flex-direction:column;flex-grow:1;min-width:0;position:relative}.quick-input-check-all{align-self:center;margin:0}.quick-input-filter{display:flex;flex-grow:1;position:relative}.quick-input-box{flex-grow:1}.quick-input-widget.show-checkboxes .quick-input-box,.quick-input-widget.show-checkboxes .quick-input-message{margin-left:5px}.quick-input-visible-count{left:-10000px;position:absolute}.quick-input-count{align-items:center;align-self:center;display:flex;position:absolute;right:4px}.quick-input-count .monaco-count-badge{border-radius:2px;line-height:normal;min-height:auto;padding:2px 4px;vertical-align:middle}.quick-input-action{margin-left:6px}.quick-input-action .monaco-text-button{align-items:center;display:flex;font-size:11px;height:25px;padding:0 6px}.quick-input-message{margin-top:-1px;overflow-wrap:break-word;padding:5px}.quick-input-message>.codicon{margin:0 .2em;vertical-align:text-bottom}.quick-input-message a{color:inherit}.quick-input-progress.monaco-progress-container{position:relative}.quick-input-progress.monaco-progress-container,.quick-input-progress.monaco-progress-container .progress-bit{height:2px}.quick-input-list{line-height:22px}.quick-input-widget.hidden-input .quick-input-list{margin-top:4px;padding-bottom:4px}.quick-input-list .monaco-list{max-height:440px;overflow:hidden;padding-bottom:5px}.quick-input-list .monaco-scrollable-element{padding:0 5px}.quick-input-list .quick-input-list-entry{box-sizing:border-box;display:flex;height:100%;overflow:hidden;padding:0 6px}.quick-input-list .quick-input-list-entry.quick-input-list-separator-border{border-top-style:solid;border-top-width:1px}.quick-input-list .monaco-list-row{border-radius:3px}.quick-input-list .monaco-list-row[data-index="0"] .quick-input-list-entry.quick-input-list-separator-border{border-top-style:none}.quick-input-list .quick-input-list-label{display:flex;flex:1;height:100%;overflow:hidden}.quick-input-list .quick-input-list-checkbox{align-self:center;margin:0}.quick-input-list .quick-input-list-icon{align-items:center;background-position:0;background-repeat:no-repeat;background-size:16px;display:flex;height:22px;justify-content:center;padding-right:6px;width:16px}.quick-input-list .quick-input-list-rows{display:flex;flex:1;flex-direction:column;height:100%;margin-left:5px;overflow:hidden;text-overflow:ellipsis}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-rows{margin-left:10px}.quick-input-widget .quick-input-list .quick-input-list-checkbox{display:none}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-checkbox{display:inline}.quick-input-list .quick-input-list-rows>.quick-input-list-row{align-items:center;display:flex}.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label,.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label .monaco-icon-label-container>.monaco-icon-name-container{flex:1}.quick-input-list .quick-input-list-rows>.quick-input-list-row .codicon[class*=codicon-]{vertical-align:text-bottom}.quick-input-list .quick-input-list-rows .monaco-highlighted-label>span{opacity:1}.quick-input-list .quick-input-list-entry .quick-input-list-entry-keybinding{margin-right:8px}.quick-input-list .quick-input-list-label-meta{line-height:normal;opacity:.7;overflow:hidden;text-overflow:ellipsis}.quick-input-list .monaco-highlighted-label .highlight{font-weight:700}.quick-input-list .quick-input-list-entry .quick-input-list-separator{margin-right:4px}.quick-input-list .quick-input-list-entry-action-bar{display:flex;flex:0;overflow:visible}.quick-input-list .quick-input-list-entry-action-bar .action-label{display:none}.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon{margin-right:4px;padding:0 2px 2px}.quick-input-list .quick-input-list-entry-action-bar{margin-right:4px;margin-top:1px}.quick-input-list .monaco-list-row.focused .quick-input-list-entry-action-bar .action-label,.quick-input-list .quick-input-list-entry .quick-input-list-entry-action-bar .action-label.always-visible,.quick-input-list .quick-input-list-entry:hover .quick-input-list-entry-action-bar .action-label{display:flex}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key,.quick-input-list .monaco-list-row.focused .quick-input-list-entry .quick-input-list-separator{color:inherit}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key{background:none}.monaco-editor .diff-hidden-lines-widget{width:100%}.monaco-editor .diff-hidden-lines{font-size:13px;height:0;line-height:14px;transform:translateY(-10px)}.diff-hidden-lines .bottom.dragging,.diff-hidden-lines .top.dragging,.diff-hidden-lines:not(.dragging) .bottom:hover,.monaco-editor .diff-hidden-lines:not(.dragging) .top:hover{background-color:var(--vscode-focusBorder)}.diff-hidden-lines .bottom,.monaco-editor .diff-hidden-lines .top{background-clip:padding-box;background-color:initial;border-bottom:2px solid #0000;border-top:4px solid #0000;cursor:ns-resize;height:4px;transition:background-color .1s ease-out}.monaco-editor .diff-hidden-lines .top{transform:translateY(4px)}.monaco-editor .diff-hidden-lines .bottom{transform:translateY(-6px)}.monaco-editor .diff-unchanged-lines{background:var(--vscode-diffEditor-unchangedCodeBackground)}.monaco-editor .noModificationsOverlay{align-items:center;background:var(--vscode-editor-background);display:flex;justify-content:center;z-index:1}.monaco-editor .diff-hidden-lines .center{background:var(--vscode-diffEditor-unchangedRegionBackground);color:var(--vscode-diffEditor-unchangedRegionForeground);display:block;height:24px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-editor .diff-hidden-lines .center span.codicon{vertical-align:middle}.monaco-editor .diff-hidden-lines .center a:hover .codicon{color:var(--vscode-editorLink-activeForeground)!important;cursor:pointer}.monaco-editor .movedModified,.monaco-editor .movedOriginal{border:2px solid var(--vscode-diffEditor-move-border)}.monaco-diff-editor .moved-blocks-lines{pointer-events:none;position:absolute}.monaco-diff-editor .moved-blocks-lines path{fill:none;stroke:var(--vscode-diffEditor-move-border);stroke-width:2}.monaco-editor .char-delete.diff-range-empty{border-left:3px solid var(--vscode-diffEditor-removedTextBackground);margin-left:-1px}.monaco-editor .char-insert.diff-range-empty{border-left:3px solid var(--vscode-diffEditor-insertedTextBackground)}.monaco-editor .fold-unchanged{cursor:pointer}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(../fonts/roboto-mono-cyrillic-ext-400-normal.13c026e0.woff2) format("woff2"),url(../fonts/roboto-mono-cyrillic-ext-400-normal.9a2551a4.woff) format("woff");unicode-range:u+0460-052f,u+1c80-1c88,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:u+0370-03ff}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(../fonts/roboto-mono-latin-ext-400-normal.ecd99f6c.woff) format("woff");unicode-range:u+0100-02af,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1e??,u+2020,u+20a0-20ab,u+20ad-20cf,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(../fonts/roboto-mono-latin-400-normal.d3026ee2.woff2) format("woff2"),url(../fonts/roboto-mono-latin-400-normal.b889d0d8.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}.editor[data-v-f81849bc]{font-family:Roboto Mono,monospace,serif} \ No newline at end of file diff --git a/dist/css/348.b7f28e0f.css b/dist/css/348.b7f28e0f.css new file mode 100644 index 00000000..9b1f2820 --- /dev/null +++ b/dist/css/348.b7f28e0f.css @@ -0,0 +1 @@ +@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(../fonts/roboto-mono-cyrillic-ext-400-normal.13c026e0.woff2) format("woff2"),url(../fonts/roboto-mono-cyrillic-ext-400-normal.9a2551a4.woff) format("woff");unicode-range:u+0460-052f,u+1c80-1c88,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,d09GRgABAAAAABo8AA0AAAAAJKQAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABMAAAADYAAAA2kw2CBE9TLzIAAAFoAAAATwAAAGB4MtVNU1RBVAAAAbgAAAA9AAAASOdwzC5jbWFwAAAB+AAAAKsAAADkJA4epWdhc3AAAAKkAAAACAAAAAgAAAAQZ2x5ZgAAAqwAABRvAAAdVJcwWL1oZWFkAAAXHAAAADYAAAA2ATWcDmhoZWEAABdUAAAAHwAAACQKsQEqaG10eAAAF3QAAACgAAAAxB1RGelsb2NhAAAYFAAAAMQAAADEpM2r8G1heHAAABjYAAAAHAAAACAAgAE6bmFtZQAAGPQAAAEvAAAChD6DX4Zwb3N0AAAaJAAAABYAAAAg/20AZQABAAAACgAkACYABERGTFQAHmN5cmwAImdyZWsAImxhdG4AIgAAAAAACAAAAAAAAAAA//8AAAAAeNpjYGE5yziBgZWBgXUWqzEDA6M8hGa+yJDGxAAGnAww0MCABNz9/d0ZHJhbmK9xJP29ysDAkcSkrcDAON+fkYGBxYp1A1AJkAsAQB4MwgB42g3HgQWAUBgGwPv+QkREI7RYoCLAozUaqOHqgBMxKCwKq7r3owVn266MorfoUJnyUC86+T+D8AHSMAVPAAAAeNokiIEFgFAYBr+6BCCkERugGQJJqAnSAhVQGxRSoWker1/h7jhJoYGRmoOvkU5rpsROTEVNS8/IwsbBzeO9RGm/oWNgYmXn+r+b3SRZC6N1uXsLgmsDhAEAAGDhieI6464b7hRvx/7/Q5NERgAq5ggBBLLmchaWVvIK1ja2inb2Sg6Oyk4qzqourmpu6hruHkJPL28fX01/kZafto6unr6BodjIOAVBKSjQAAABAAH//wAPeNp0VQV020gQ1azk+Mp1HSZXxhScuHUcKXZNgQOHnFzKHCpT0uAxM5R7lDIz1ynTMTMzM0NiKTdrpXfF9yQtzdfO/Pk7yxCmlGG4h1U7GTXTnWFAawcD2LWCVstW1x2Uhz4mDwzVDz11HJrlu1Q724PQvIo0SXczLLMVcZMQl8QMZLIZxs5nZQlZWZZMs8VstjjoAJ/IgNfysbFxsbHq6Ch1VJSa12jskXGMMt4Kr47fkZsbBIuBrxEcBbpUA0AwN3frGLmkDSyuGrN5EGSkpU11yp9JWVPSLBk2i6UqE0RH5uM1/rnWAXm92LhMs2lCds3CjAwrhP8hRl4/yeOexPMmIOvhJUhMSh7hzh6RkqoDBpj96Hkmet4D43XwGr7rZV+SVpLD4fvYGyUXWfUEvN7aHnyCcAwiHkCEV0HwGoOGvnb8ct4d0pbt28lw1U7pQVLbHiSrpInUfjvapyr22hj8e4yyx3YYLm9h58prYLxq56qOBStXcnNWUXvK5Vq074kDsAOmQB3ZgvSAg59In4D0iTz8gSNHyFppHGsnN0jf7CRPYS6+p9jFiC1EbG8cUAyLKWSxRRKbv9jb56/p0KvP3i87GZo9kk8KJBXbV1opHUKf0yj+IcR7EN8tEhtL/6EFznOIlZ47fIglDtXOjpOcpz3I+TqOM6iX6Z3fc5NVpxkTU0D5w/xGHoOeJpM+MTS59LEPzRIUUcTQFfoY9Gh7jkLwsQ/tMucmQ0JiUqkoLhwzZoEoliYmJQBmLrFMFBd0zSQm7IcevftkGIyVfn+F0Wjr06cXYHy9bUZjhU+Z6d2T3L6+eGUgcIvNJgi2IbcEAiuK1xe3np2w3YwTf27MrBXEarMlPd1irhGFWvtG+zxRqLaY061mS7UgzsNIjyEzzchMX0aHkSr6dij65pFgDX+uiqEJdBU7cnKKinJydlTIaSHQ+WalWazWtLSZPnI1OAVh1bRpqwXBSTAPHxMR0kym6Tk5U4xGC9A8FOJut9NzGFFlDN2Bu73jaTi5V9WvtbX9R1U/ajUSrR5SlEVlAnZFL2Se/Ow7sEEufg9yIedtuQQ2vMvWE5eULunJlVIb+ZC8imh3V0RXKGitXYvQsfK+1+AMu5WFM6+SN8h74TnSJ0THLkD7WrQXFG2YwIJOQRzvgHzyFglXk6elQYQ99QR35wOtHTc+/ATVRgtqo4wrZhIYO1V+9P8qcCjEKSqJc2T+n/kYhUBFGS15Pu+Butr9Pm9entdHe15fXghXaouK6iwR6usKi+Zjh1hi658OBMrLA4Gn62PrnwkEhg8PBJ65L7ZkgSD4/YKwoCQ2iF2fD7uUuQqMpZpz0th5Oz1hFoxd9wCEjsiv9NPIzx7lnOGXc3NZG9rORttaznkRy7PkT9+ERXLF2zAIBr0pV8Cid8gmWCB9I30Aj8tVxEDiEN2moC8+zd3gpm/laHj6I7l2digEH8hIPnwkVzcRbceTMIqa/01mkA/ZayI7R1PukDckDf52Zosul5jtJO9keL0ZNp8P+QYd9zO7UXUGrePOt1edi9Uh16KI8oXtZ3uqsdZhw6xWtztjsNs92OrxUIYOy5O4vuh3alcl+e8Ex9nR/3POrwPqQ6EBtddkjjQmDNZ229DWo38sX+G3laak9uec7WZ4w2iKj9NYk+Yjp58kp2tTdMkm081VDJAB3F+sNaqFYXEP1q4l0/1jNke1yDfAbQzDgpb7lP0t6hiu9mGSFIvLRUXm2+5qkF7Nzs52OvEDHWd7Ucfkv+EKeUG6z5eONNm62s5OYiMz2FjkNorRijTefZgnG6pbpdwDeN5s4TvaVPHL24OqeFRzOq7vxXVWOS98NyLEAcmU2rk75f5yAPJTk2AQLav4fsWeGj0m7EHbrvqIvRRGUM6yynFuiYw5pziyMefSeu6xYItkG/mcZHu9R+9o3uu/JocQX443dMvtx10+1wHCDzI3jhrZaLSmmdLN9SOHNxpsRrJ42bK+6xt+njRp/uQx1f/csr7lz8mjZ9ePnfgr6DaOOHlNXrBsWNGZ4RvLT5S4y4qdwdPIQRbGuBJjjFK0inc/mQ7NR+SkVXLyEe7xjioaH8ayQKkE2FNTbQp4o0HXu4BdH95Bfg0fYpcuW7aMbFi+nNQuX84AsxoxA5WKhrefcmMODDeFSGyEtPj2r2kW5qLVnK67zwE80gVA70s2QXaTr8J2+EJOYjvDX5IXEsjQ5Q9LIenAw8vRj3zE3YW4FGagwrNB4VKpOnExdsc5BRsizAqaSB5MSsXWRPJAToUq1rndeXlu97qK0OR17mH5+cPc66S3jQZ9ld9fpTcYyWtGvaHS56s06I3cpy++qL42P//wnLmH8/PL1KdPq8uvzD80d04bjqR/Sm4fMsSllvpFuYbY7igL3kFH5Ee1yzYE9Q1MNa0M6LMBBxqD4o0DO4rLyJDiMp2hLpKnQlmjdf31IY8oPj4xNKFVFL0hg67/aPiIfSVs6ylardcHSY30aMMBv7+wh3wY8noU+v0HGuhc8AarVcQ9J+OeM1GPLqzhlNesi8pxTBdlPC4rLl2iPpONcFr+01Oh542B3Lxj9fVHc/OuQY4qPXI7nC6u42Pj0gcNbCkqvn7QQGtsDD/nxIllGXcFg7tGl9z33fDyiRPLh393X8noncHSuzKWnejXWOlfX1lav8/j9v1LiVWAt42e4chW2EyyLVuyJNuSzMwch0y5pLnESbPiNeU28KS4Mq25Hl+5x8wMyTEzw3h7eMy8NO5+173MpUE4xv/7vvd7QYlo7JmJ7qX3pZZsLGvIrjO/gieBhthrOss8VF9vPO+kVcZibo/ouQ0yVJ8cqeYs7u9GbFyZA7WuSS496nZ7PG73kSWJNRbUIWtUidCMXRfGkSZUKNE2NfNmsxodvqzD3IljDqmAkJEDgfarcJ0GDm1sQK1iDVbMF77aJh95pbWtS4OKzWqNRYSq+fJJDswXCt3Gn8qvPBkJt8mlUg8++xulSYyREbdrP6ju0dJOeD6YhrGmAKqrFFWm2kopVQ6jCrxcSl4pqFopaXH1jCojWj10RyTaPo13GOluZsm9ANUBr7bTrPMrDEw0ELh1We910YUEQQLnsbrFVdQTPjlDkQv9ofk4rtNi2ILaN4Fa3tTzzy7oA5WhmdccDgbvWX3ltR6tVSQ2q0wrQ/3Xez3B2SPHXAw77I2vNtJmqUjIqrhh7xBJ0gxB9NncvRhGAty1AzU58o2G1lNAbSFQKMT9XukpFaQsPfwy9ME09D4QiN8vWcIVzZwumaBP4OYyAjYBBh2u04BUMQ88t4LNin2UX2ApOBUzed7Q/d+ARVq5GVFc5DKgegxFc3a4Y4fN7ksnky9s2jCdTKR/+qOWARRFNCpVq4kp6PVxhM3edkXfIafLZ2YYZlN3+zjLAntIb+ju2UQzRvgv9m6S8kmbxT2RyLF++ehr7e3d3e3tr43KP4FknYhDqbQrcLdEIuM3NikadxvtjNG47vQb8tzVXk8U4mU93m1xeX7S7YlGPe5J0LOrQeWL4HxND3BP1Uinqg5fqapcr9sLbrm4A3J39cZU2ne2e1d3pJJPr1n8aFusD5qyMexIKjNmpBmNRh6k0Bj1pz8ZE2qVSURgBEWtyYZW0LR9Csolkg8tXPNYNJYidao0a2pTMyzkKGxiTWaLybC7n25VoxiqRBIAYnKhoq4Wvrmutk7UJA8byAiiUKsVSNyQ3WhiLQzNTBRMeVzFCnkUQgyBeidKu2A74MOyHJfdZTWBI9XuGqmkhcpqVJfsh2D76TbOl6WPh/aDAxlZZsfAM2xEKhGLRDxSvkQTV6spiKWoRb4fW9IIomRp47pW6Hjt48dKb/bfncsdCHZvsVjDIqpBKeDjYpVDJTUpexWtDN1Hx7IIoua5GnGVOuMq7I5EJlLQQ2Uev7u0GDYDjtKB3AtIu6r3AOIVZq0kHpqm7p6WenRUnye+ECeIaZ/Lde1gctROBBCIdx+X0bmlUrkW163onHkezo3f5nJaIAJXhCjBjUDjpgAelMDfqWqYssbVVnAvrubuinb4zxkIotIv6HwC56xafrvfHyxHkOXDd4AIEg747xhOLMAxLfQbnMAGSx9QeqwYDPZjBr0sn+n87iR05eR3s5l8PpP97mTpocnvdmbyRzwu5w1D11yz+LDTZufcv2v4hJNhWdpxcvmuck+eB2cNgX1XVzJvFXyr+Jn7PLTIxNCjHYYOCnGoWG3BSkQQJQrBoTtmn1p2gGXJBl6DUrJbrGmSSrJJzt/BKwfP/A4eqv1tjRX4CKkfkc6RpX+ODKE5yCNzRIAA2vmr1nqfMmjQD4V5+mYOTywGXCzWNJeOCJ0G46oOVUQC8Rk+CaSEFPhLE5xHN24oZVNXESTZWHeUy1HKZT6K+yyzkGV8TbXXQjCBoq3UdTPlUz1W2gjbAJMPguL9F6/b/4Xjy+8z929qx6H27e+2tWeNemo42bXdYrV3pFLTYyFzXCoU8Xl8vXIxGkPPoly/0Le+ZavN7scxRZxx7+269trenVbCIRAJWIv5wMLoaG3DYbHCarHsnOfsNxjCckWH07k9N3LC7Ukq+E0yYbNWqrXK5Ca0V5Fm6F46mkEUKr6KZzMYhtORJQaNWSSTHpPJ+AZE4cPotFqFycvTHzjzG/gBMH1txfG6z7o92cUCLYZzp/l7p6B1OhwbDNr77azYqVYYBAIR947jx08v5N4xO9E7RlKYVLe7UdQgELgtnMNAE+4BatIGNg6t8ZbfobIBl5JP+rIiCbeBhPDYxMCpRLo4pXCijvGW4ZOg0VM6klqbc/cSpEfq95D9nvwqgsCgP8u3f1nIF4Ph2FuHT2McEcII1ZpCW+sr++TZ/W53GJHLggRkGLzdQxjbwuFT5S5sKg3ADnDKOPin2rBUvuovgYFL+C332Xs4wxufi8dTLankm7t9PRpUC+kQpU+Rtw4a9DbI43RO9g19x2I1U0bDRHf7KorSPwZ86/1woZjJvrHGtPKxVEtRWi/h8w1qJqJA8KatsgjDLA2n+jUagsdvdTq3pk1tkwF/q1FHFF3futHt8oI+rwVbvB/MUVPjOztJ8lKyW1m5y4Z4eP/se2NPxWLJZCz29PjY07FokiJVKWb2Bb1BP5LLjxr0espgKP8FbgBz72lvf2OkEuf72tufX4rkDwZNHVhpRJE76CmLo+dgrirMQzWPAI/oKp+ygrbLsY0Udp3eCq1gaOP6Diys1YYxFs1biJBCgULcU7feOvskYByTvq6hHlXsEaPNUmk2wSmC178VdCEOXl9/NgnLLjJnlEKCVEsy1D8VC4cfWrf9yUDAIxGJWOQNTysXRId1+chSijLCodmj254LR0KLuq/4YqznpmRy1LGtNLO/cCIayxtYZvtA2fesK5HwRjgEcmcScP1cGjgP6xW8+CqFVtGMoRrplbNx+FMTd3s8jqDLtb+QWIDhWLyIoiqOVCaNWZf5+zGGtrpct0CmpuZ6hcCWRhQIBwUmUFByQJ8Il+dyLy4beauzo5clqQHHbE4yz+/bmfCs8XqWsPvoJYHORxcNv5TNLT/EeQmheA2NaZ9/si2+yx/oqSmnjhID7wS10OCfywcdD+ffraznvDjl7cNwYirg851cOrXtYZ/XYde9YXRygD4OdwKn2CtsCfhPLYd+XlIf+m4uVxSUvNB7gpVdXW+vvhuqWbjtTM3+9GQo3Ccpn6ALzPAgOEH5OBU1vnR48F1irlUMUjn3+Td6fRJo9HXEyG9uxihqbF5wiJDiPB4mJeeHAgME4+I1NggAMctft4Y4cG0dIuKTcpAbREgdzJ2GuXVKsdiqJm0CIY8DJNO/Oxfa07H+s+7uJVazMmYwxJRmq411Huz2joe6ro2lN7m3l2YOeIetvvk6lQZF1QWPNmmAzKWvjGmtJ69Sq9sjkZO9B6BagKJjoO7jtW8Dv5AFlZcxIr5E1qvsK32OlOvPwziA1/nLXZkffLxRl6ZsZvP2rswWi8XVlog/tQ7H8AURkApJ/XQyHLp3eMltgUCM7ph9GGQfP0kHJVJp+wgwmZzxww18LrS4OOlwuO1W665u4VWPtqQHRfd2jhgAmbBgR1uhKzilJ5ffH44kI6HQg2tvh0XQn8SudiChahXa4y89KErZbGPnrlrcXftC+QoNxK2nuZdQ/7NhY86ZzQk0N/i0UvmUOojr2mitF0UA8qWUkK9ogEzPQ0ydqFHMIkJFvQL1apg2XBeAv1taWSxCR8urg9SLD9fCzc1NGsnsxtlXOWnOPgHSKBLBtYfF9QiKFsvXjED3y6nHXDNwTgnnjMB/hh73Ytx5KfnFN4LnEEDLjswcW0mwXLjRa8HneYKDZBmApJwY8BdWEyJlfX19U1OTRjTC5XIbanm0Vm0po68Wnq6F66R8sUMrQpuk8joOh2M3Qn8y2svqu2rmEB7FeiYtOGUxK+NGJqVi2Gxcl2XpXnN6dySxyV8SkCktwkpYp1Kl7HTgGdPMjDmrY5MIjosEyqJP6UO/Pbt58+y/ejJDnoahKIzedu0rG2wD0nWGBALJCMHRhN+BIwGPAIVBDCD8FiwWxcwswU3gMASHqQcoX857rTwnd303d+K197O69smSm8YTi8wss+JvbvL1u/yZm9rEOgf43yf8q/ylu5FPgn+wWP5Z/shdy6fB6w6QrzXrC57T7Xn/xnPuVf+I74f6Y/y3/BV+O9QvTN6/udLnvpk5G3/OZEMuFjuLqCLvgmOYFAnuwOzK4QFMZgQnMJkQnMJkPrCDyXHgDCaXgZfgsFcUd+GQToh7MPkBvAyz64f7MMkBvALTT7YVa6r8O3m9iE6b32Wb8v3gf6ITefYy7k5+hykVw0SWL1Z3K7vrbd6R5fuI2j1vN5J2zufMGTuoZLlrmX6JHc9nsmGHrm7X6TYkC+IhHHbV4hHMdh9ehdngw2swZ6cv7dl5mjRnY0tvP5LmLLofYotuW0v3pbdflSy3DPbQ21H1D1HCxgMAAAEAAAADAAAuwDI/Xw889QALCAAAAAAAxPARLgAAAADa2D+r/AX91QZHCGIAAAAJAAIAAAAAAAB42mNgZGDgSPp7lYGB5ewf1n9tbO5AEVTACACWDQXjAHjaZM4BZkJhAADg72U32AEGYJCBGB5gBmMCCVAEURKRQAFIEiEQUkC9QHk90QHSEbpHhD8I6DvB93ZB0dreSGJtaqzu5E9JrK2nqimLbtGHY+4zes992cmrK5hYaPlRUzGQ+NU11LF0kPq2VbbS1bAx11Txb6Ygrxiu4RyyEEI/3KXPQfvlECtJxAaGllJzmZ7jYyA3gXlVQOwPAEAzOD0AAAAAABwAeQCSAKoAwgDgAQABGAGNAcQB1wH2Ag4CJgJ0AooCqQLHAt4DBQM3A0YDdQN9A40DqAP/BBMELQRABFwEtgTwBUgFtwYsBkkGxgc+B5oHzggkCFEInAkjCVMJpgoHCloKigrFCysLbAvoDFoMpw0tDTkNRQ1RDV0NaQ11DYENjA2UDZwNpA2sDbQNvA3EDcwN1A3cDeQN7A30DfwOCA4UDh8OKg41DkAOSw5TDlsOYw5rDnMOfg6JDpQOnw6qeNpjYGRgYEhk2MggxtDOwArmIQAzAyMAKUoBu3jajZE1dgNADETHGGZOE2ZmasLM2JqZ2RfJSXwK94E6J8k8PYXxLf2VNNICgErcwgSDuYxcAJQNaEZB2YhqFJVNWMajshn9hnplC9oNi8pW9BrOlatxachA2MBahqJyBfleufotv6GO9idsIIoY8kjADy98SKET05jEFOZIl7S4uZ4jCgdHiqMTR5wjQqfURRFgjFOUa0gjRU2U9iT3g+QUW4y7ZUyweeGXiDTzjVMVRVisUTYvQnDDI9lTVEwg8a5uWKsO/XCac2q9zBuCnboZjGNS2gp2cMK2Q3qvVB3GPil/uuvHqGu45Y5+8Xe+1ftXDX0VfZOstHF6YhxOefNxeUMvvSHWcNISYTW3vMoh9rCBLRzjgvMYpqX2Db36h9jjsKvyWDKFwf0zki9jRQB42mNgZgCD/1kMKUCKkQENAAAqMAHSAAA=) format("woff");unicode-range:u+0370-03ff}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(../fonts/roboto-mono-latin-ext-400-normal.ecd99f6c.woff) format("woff");unicode-range:u+0100-02af,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1e??,u+2020,u+20a0-20ab,u+20ad-20cf,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(../fonts/roboto-mono-latin-400-normal.d3026ee2.woff2) format("woff2"),url(../fonts/roboto-mono-latin-400-normal.b889d0d8.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}:root{--terminal-bg:#24292f;--terminal-fg:#d0d7de;--terminal-bg-hover:#32383f;--terminal-fg-hover:#f6f8fa;--terminal-bg-selection:#218bff26;--terminal-separator:#8c959fbf;--terminal-timestamp:#8c959f;--terminal-debug:#4194e7;--terminal-info:#86e6f3;--terminal-warn:#f8c471;--terminal-error:#f37672;--terminal-fatal:#f72a1b}.page-logs{background-color:var(--terminal-bg);color:var(--terminal-fg)}.page-logs .logs{padding:1rem}.page-logs .logs code{font-family:Roboto Mono,monospace,serif}.page-logs .logs .line.start{margin-top:1rem}.page-logs .logs .line.start:before{border-top:1px solid var(--terminal-separator);content:"";left:0;position:absolute;right:0;top:-.5rem}.page-logs .logs:first-child .line:first-child{margin-top:0}.page-logs .logs:first-child .line:first-child:before{display:none}.page-logs .line{border-radius:2px;font-size:14px;line-height:20px;padding:0 .5rem;position:relative;white-space:pre-wrap}.page-logs .line:hover{background-color:var(--terminal-bg-hover);color:var(--terminal-fg-hover)}.page-logs .line ::selection{background-color:var(--terminal-bg-selection)}.page-logs .line .timestamp{color:var(--terminal-timestamp);font-size:12px;font-weight:700;margin-right:.5rem}.page-logs .line .level{color:var(--terminal-fg);font-weight:700;margin-right:.5rem}.page-logs .line .level-debug{color:var(--terminal-debug)}.page-logs .line .level-info{color:var(--terminal-info)}.page-logs .line .level-warn{color:var(--terminal-warn)}.page-logs .line .level-error{color:var(--terminal-error)}.page-logs .line .level-fatal{color:var(--terminal-fatal)}.page-logs .line .stdout{color:var(--terminal-fg)}.ansi-up-theme .ansi-black-fg{color:#3e424d}.ansi-up-theme .ansi-black-bg{background-color:#3e424d}.ansi-up-theme .ansi-black-intense-fg{color:#282c36}.ansi-up-theme .ansi-black-intense-bg{background-color:#282c36}.ansi-up-theme .ansi-red-fg{color:#e75c58}.ansi-up-theme .ansi-red-bg{background-color:#e75c58}.ansi-up-theme .ansi-red-intense-fg{color:#b22b31}.ansi-up-theme .ansi-red-intense-bg{background-color:#b22b31}.ansi-up-theme .ansi-green-fg{color:#00a250}.ansi-up-theme .ansi-green-bg{background-color:#00a250}.ansi-up-theme .ansi-green-intense-fg{color:#007427}.ansi-up-theme .ansi-green-intense-bg{background-color:#007427}.ansi-up-theme .ansi-yellow-fg{color:#ddb62b}.ansi-up-theme .ansi-yellow-bg{background-color:#ddb62b}.ansi-up-theme .ansi-yellow-intense-fg{color:#b27d12}.ansi-up-theme .ansi-yellow-intense-bg{background-color:#b27d12}.ansi-up-theme .ansi-blue-fg{color:#208ffb}.ansi-up-theme .ansi-blue-bg{background-color:#208ffb}.ansi-up-theme .ansi-blue-intense-fg{color:#0065ca}.ansi-up-theme .ansi-blue-intense-bg{background-color:#0065ca}.ansi-up-theme .ansi-magenta-fg{color:#d160c4}.ansi-up-theme .ansi-magenta-bg{background-color:#d160c4}.ansi-up-theme .ansi-magenta-intense-fg{color:#a03196}.ansi-up-theme .ansi-magenta-intense-bg{background-color:#a03196}.ansi-up-theme .ansi-cyan-fg{color:#60c6c8}.ansi-up-theme .ansi-cyan-bg{background-color:#60c6c8}.ansi-up-theme .ansi-cyan-intense-fg{color:#258f8f}.ansi-up-theme .ansi-cyan-intense-bg{background-color:#258f8f}.ansi-up-theme .ansi-white-fg{color:#c5c1b4}.ansi-up-theme .ansi-white-bg{background-color:#c5c1b4}.ansi-up-theme .ansi-white-intense-fg{color:#a1a6b2}.ansi-up-theme .ansi-white-intense-bg{background-color:#a1a6b2}.ansi-up-theme .ansi-default-inverse-fg{color:#fff}.ansi-up-theme .ansi-default-inverse-bg{background-color:#000}.ansi-up-theme .ansi-bold{font-weight:700}.ansi-up-theme .ansi-underline{text-decoration:underline}@font-face{font-display:swap;font-family:DSEG14;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff")}.digit-display[data-v-b9abaffc]{font-family:DSEG14;font-size:larger;text-shadow:#00bcd4 1px 2px 3px}.card-title[data-v-b9abaffc]{background-image:linear-gradient(90deg,#1976d2,#0000 50%);color:#fff} \ No newline at end of file diff --git a/dist/css/532.fc947aa7.css b/dist/css/532.fc947aa7.css new file mode 100644 index 00000000..11d4f828 --- /dev/null +++ b/dist/css/532.fc947aa7.css @@ -0,0 +1 @@ +@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(../fonts/roboto-mono-cyrillic-ext-400-normal.13c026e0.woff2) format("woff2"),url(../fonts/roboto-mono-cyrillic-ext-400-normal.9a2551a4.woff) format("woff");unicode-range:u+0460-052f,u+1c80-1c88,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:u+0370-03ff}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(../fonts/roboto-mono-latin-ext-400-normal.ecd99f6c.woff) format("woff");unicode-range:u+0100-02af,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1e??,u+2020,u+20a0-20ab,u+20ad-20cf,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(../fonts/roboto-mono-latin-400-normal.d3026ee2.woff2) format("woff2"),url(../fonts/roboto-mono-latin-400-normal.b889d0d8.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}:root{--terminal-bg:#24292f;--terminal-fg:#d0d7de;--terminal-bg-hover:#32383f;--terminal-fg-hover:#f6f8fa;--terminal-bg-selection:#218bff26;--terminal-separator:#8c959fbf;--terminal-timestamp:#8c959f;--terminal-debug:#4194e7;--terminal-info:#86e6f3;--terminal-warn:#f8c471;--terminal-error:#f37672;--terminal-fatal:#f72a1b}.page-logs{background-color:var(--terminal-bg);color:var(--terminal-fg)}.page-logs .logs{padding:1rem}.page-logs .logs code{font-family:Roboto Mono,monospace,serif}.page-logs .logs .line.start{margin-top:1rem}.page-logs .logs .line.start:before{border-top:1px solid var(--terminal-separator);content:"";left:0;position:absolute;right:0;top:-.5rem}.page-logs .logs:first-child .line:first-child{margin-top:0}.page-logs .logs:first-child .line:first-child:before{display:none}.page-logs .line{border-radius:2px;font-size:14px;line-height:20px;padding:0 .5rem;position:relative;white-space:pre-wrap}.page-logs .line:hover{background-color:var(--terminal-bg-hover);color:var(--terminal-fg-hover)}.page-logs .line ::selection{background-color:var(--terminal-bg-selection)}.page-logs .line .timestamp{color:var(--terminal-timestamp);font-size:12px;font-weight:700;margin-right:.5rem}.page-logs .line .level{color:var(--terminal-fg);font-weight:700;margin-right:.5rem}.page-logs .line .level-debug{color:var(--terminal-debug)}.page-logs .line .level-info{color:var(--terminal-info)}.page-logs .line .level-warn{color:var(--terminal-warn)}.page-logs .line .level-error{color:var(--terminal-error)}.page-logs .line .level-fatal{color:var(--terminal-fatal)}.page-logs .line .stdout{color:var(--terminal-fg)}.ansi-up-theme .ansi-black-fg{color:#3e424d}.ansi-up-theme .ansi-black-bg{background-color:#3e424d}.ansi-up-theme .ansi-black-intense-fg{color:#282c36}.ansi-up-theme .ansi-black-intense-bg{background-color:#282c36}.ansi-up-theme .ansi-red-fg{color:#e75c58}.ansi-up-theme .ansi-red-bg{background-color:#e75c58}.ansi-up-theme .ansi-red-intense-fg{color:#b22b31}.ansi-up-theme .ansi-red-intense-bg{background-color:#b22b31}.ansi-up-theme .ansi-green-fg{color:#00a250}.ansi-up-theme .ansi-green-bg{background-color:#00a250}.ansi-up-theme .ansi-green-intense-fg{color:#007427}.ansi-up-theme .ansi-green-intense-bg{background-color:#007427}.ansi-up-theme .ansi-yellow-fg{color:#ddb62b}.ansi-up-theme .ansi-yellow-bg{background-color:#ddb62b}.ansi-up-theme .ansi-yellow-intense-fg{color:#b27d12}.ansi-up-theme .ansi-yellow-intense-bg{background-color:#b27d12}.ansi-up-theme .ansi-blue-fg{color:#208ffb}.ansi-up-theme .ansi-blue-bg{background-color:#208ffb}.ansi-up-theme .ansi-blue-intense-fg{color:#0065ca}.ansi-up-theme .ansi-blue-intense-bg{background-color:#0065ca}.ansi-up-theme .ansi-magenta-fg{color:#d160c4}.ansi-up-theme .ansi-magenta-bg{background-color:#d160c4}.ansi-up-theme .ansi-magenta-intense-fg{color:#a03196}.ansi-up-theme .ansi-magenta-intense-bg{background-color:#a03196}.ansi-up-theme .ansi-cyan-fg{color:#60c6c8}.ansi-up-theme .ansi-cyan-bg{background-color:#60c6c8}.ansi-up-theme .ansi-cyan-intense-fg{color:#258f8f}.ansi-up-theme .ansi-cyan-intense-bg{background-color:#258f8f}.ansi-up-theme .ansi-white-fg{color:#c5c1b4}.ansi-up-theme .ansi-white-bg{background-color:#c5c1b4}.ansi-up-theme .ansi-white-intense-fg{color:#a1a6b2}.ansi-up-theme .ansi-white-intense-bg{background-color:#a1a6b2}.ansi-up-theme .ansi-default-inverse-fg{color:#fff}.ansi-up-theme .ansi-default-inverse-bg{background-color:#000}.ansi-up-theme .ansi-bold{font-weight:700}.ansi-up-theme .ansi-underline{text-decoration:underline} \ No newline at end of file diff --git a/dist/css/app.3ba06184.css b/dist/css/app.3ba06184.css new file mode 100644 index 00000000..86bc7a6b --- /dev/null +++ b/dist/css/app.3ba06184.css @@ -0,0 +1,6 @@ +@charset "UTF-8";@font-face{font-family:Roboto;font-style:normal;font-weight:100;src:url(../fonts/KFOkCnqEu92Fr1MmgVxIIzQ.68bb21d0.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-weight:300;src:url(../fonts/KFOlCnqEu92Fr1MmSU5fBBc-.c2f7ab22.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../fonts/KFOmCnqEu92Fr1Mu4mxM.f1e2a767.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-weight:500;src:url(../fonts/KFOlCnqEu92Fr1MmEU9fBBc-.48af7707.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-weight:700;src:url(../fonts/KFOlCnqEu92Fr1MmWUlfBBc-.77ecb942.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-weight:900;src:url(../fonts/KFOlCnqEu92Fr1MmYUtfBBc-.f5677eb2.woff) format("woff")}@font-face{font-display:block;font-family:Material Icons;font-style:normal;font-weight:400;src:url(../fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.c5371cfb.woff2) format("woff2"),url(../fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.4d73cb90.woff) format("woff")}.material-icons{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:inline-block;font-family:Material Icons;font-style:normal;font-weight:400;letter-spacing:normal;line-height:1;text-rendering:optimizeLegibility;text-transform:none;white-space:nowrap}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fadeIn{animation-name:fadeIn}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.fadeOut{animation-name:fadeOut} +/*! + * * Quasar Framework v2.13.0 + * * (c) 2015-present Razvan Stoenescu + * * Released under the MIT License. + * */*,:after,:before{-webkit-tap-highlight-color:transparent;-moz-tap-highlight-color:#0000;box-sizing:inherit}#q-app,body,html{direction:ltr;width:100%}body.platform-ios.within-iframe,body.platform-ios.within-iframe #q-app{min-width:100%;width:100px}body,html{box-sizing:border-box;margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}img{border-style:none}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:initial;height:0;overflow:visible}button,input,optgroup,select,textarea{font:inherit;font-family:inherit;margin:0}optgroup{font-weight:700}button,input,select{overflow:visible;text-transform:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button:-moz-focusring,input:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:initial}textarea{overflow:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.q-icon{word-wrap:normal;fill:currentColor;box-sizing:initial;direction:ltr;flex-shrink:0;height:1em;letter-spacing:normal;line-height:1;position:relative;text-align:center;text-transform:none;white-space:nowrap;width:1em}.q-icon:after,.q-icon:before{align-items:center;display:flex!important;height:100%;justify-content:center;width:100%}.q-icon>img,.q-icon>svg{height:100%;width:100%}.material-icons,.material-icons-outlined,.material-icons-round,.material-icons-sharp,.material-symbols-outlined,.material-symbols-rounded,.material-symbols-sharp,.q-icon{align-items:center;cursor:inherit;display:inline-flex;font-size:inherit;justify-content:center;-webkit-user-select:none;user-select:none;vertical-align:middle}.q-panel,.q-panel>div{height:100%;width:100%}.q-panel-parent{overflow:hidden;position:relative}.q-loading-bar{background:#f44336;position:fixed;transition:transform .5s cubic-bezier(0,0,.2,1),opacity .5s;z-index:9998}.q-loading-bar--top{left:0;right:0;top:0;width:100%}.q-loading-bar--bottom{bottom:0;left:0;right:0;width:100%}.q-loading-bar--right{bottom:0;height:100%;right:0;top:0}.q-loading-bar--left{bottom:0;height:100%;left:0;top:0}.q-avatar{border-radius:50%;display:inline-block;font-size:48px;height:1em;position:relative;vertical-align:middle;width:1em}.q-avatar__content{font-size:.5em;line-height:.5em}.q-avatar img:not(.q-icon):not(.q-img__image),.q-avatar__content{border-radius:inherit;height:inherit;width:inherit}.q-avatar--square{border-radius:0}.q-badge{background-color:var(--q-primary);border-radius:4px;color:#fff;font-size:12px;font-weight:400;line-height:12px;min-height:12px;padding:2px 6px;vertical-align:initial}.q-badge--single-line{white-space:nowrap}.q-badge--multi-line{word-wrap:break-word;word-break:break-all}.q-badge--floating{cursor:inherit;position:absolute;right:-3px;top:-4px}.q-badge--transparent{opacity:.8}.q-badge--outline{background-color:initial;border:1px solid}.q-badge--rounded{border-radius:1em}.q-banner{background:#fff;min-height:54px;padding:8px 16px}.q-banner--top-padding{padding-top:14px}.q-banner__avatar{min-width:1px!important}.q-banner__avatar>.q-avatar{font-size:46px}.q-banner__avatar>.q-icon{font-size:40px}.q-banner__actions.col-auto,.q-banner__avatar:not(:empty)+.q-banner__content{padding-left:16px}.q-banner__actions.col-all .q-btn-item{margin:4px 0 0 4px}.q-banner--dense{min-height:32px;padding:8px}.q-banner--dense.q-banner--top-padding{padding-top:12px}.q-banner--dense .q-banner__avatar>.q-avatar,.q-banner--dense .q-banner__avatar>.q-icon{font-size:28px}.q-banner--dense .q-banner__actions.col-auto,.q-banner--dense .q-banner__avatar:not(:empty)+.q-banner__content{padding-left:8px}.q-bar{background:#0003}.q-bar>.q-icon{margin-left:2px}.q-bar>div,.q-bar>div+.q-icon{margin-left:8px}.q-bar>.q-btn{margin-left:2px}.q-bar>.q-btn:first-child,.q-bar>.q-icon:first-child,.q-bar>div:first-child{margin-left:0}.q-bar--standard{font-size:18px;height:32px;padding:0 12px}.q-bar--standard>div{font-size:16px}.q-bar--standard .q-btn{font-size:11px}.q-bar--dense{font-size:14px;height:24px;padding:0 8px}.q-bar--dense .q-btn{font-size:8px}.q-bar--dark{background:#ffffff26}.q-breadcrumbs__el{color:inherit}.q-breadcrumbs__el-icon{font-size:125%}.q-breadcrumbs__el-icon--with-label{margin-right:8px}[dir=rtl] .q-breadcrumbs__separator .q-icon{transform:scaleX(-1)}.q-btn{align-items:stretch;background:#0000;border:0;color:inherit;cursor:default;display:inline-flex;flex-direction:column;font-size:14px;font-weight:500;height:auto;line-height:1.715em;min-height:2.572em;outline:0;padding:4px 16px;position:relative;text-align:center;text-decoration:none;text-transform:uppercase;vertical-align:middle;width:auto}.q-btn .q-icon,.q-btn .q-spinner{font-size:1.715em}.q-btn.disabled{opacity:.7!important}.q-btn:before{border-radius:inherit;bottom:0;box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f;content:"";display:block;left:0;position:absolute;right:0;top:0}.q-btn--actionable{cursor:pointer}.q-btn--actionable.q-btn--standard:before{transition:box-shadow .3s cubic-bezier(.25,.8,.5,1)}.q-btn--actionable.q-btn--standard.q-btn--active:before,.q-btn--actionable.q-btn--standard:active:before{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.q-btn--no-uppercase{text-transform:none}.q-btn--rectangle{border-radius:3px}.q-btn--outline{background:#0000!important}.q-btn--outline:before{border:1px solid}.q-btn--push{border-radius:7px}.q-btn--push:before{border-bottom:3px solid #00000026}.q-btn--push.q-btn--actionable{transition:transform .3s cubic-bezier(.25,.8,.5,1)}.q-btn--push.q-btn--actionable:before{transition:border-width .3s cubic-bezier(.25,.8,.5,1)}.q-btn--push.q-btn--actionable.q-btn--active,.q-btn--push.q-btn--actionable:active{transform:translateY(2px)}.q-btn--push.q-btn--actionable.q-btn--active:before,.q-btn--push.q-btn--actionable:active:before{border-bottom-width:0}.q-btn--rounded{border-radius:28px}.q-btn--round{border-radius:50%;min-height:3em;min-width:3em;padding:0}.q-btn--square{border-radius:0}.q-btn--flat:before,.q-btn--outline:before,.q-btn--unelevated:before{box-shadow:none}.q-btn--dense{min-height:2em;padding:.285em}.q-btn--dense.q-btn--round{min-height:2.4em;min-width:2.4em;padding:0}.q-btn--dense .on-left{margin-right:6px}.q-btn--dense .on-right{margin-left:6px}.q-btn--fab .q-icon,.q-btn--fab-mini .q-icon{font-size:24px}.q-btn--fab{min-height:56px;min-width:56px;padding:16px}.q-btn--fab .q-icon{margin:auto}.q-btn--fab-mini{min-height:40px;min-width:40px;padding:8px}.q-btn__content{transition:opacity .3s;z-index:0}.q-btn__content--hidden{opacity:0;pointer-events:none}.q-btn__progress{border-radius:inherit;z-index:0}.q-btn__progress-indicator{background:#ffffff40;transform:translateX(-100%);z-index:-1}.q-btn__progress--dark .q-btn__progress-indicator{background:#0003}.q-btn--flat .q-btn__progress-indicator,.q-btn--outline .q-btn__progress-indicator{background:currentColor;opacity:.2}.q-btn-dropdown--split .q-btn-dropdown__arrow-container{padding:0 4px}.q-btn-dropdown--split .q-btn-dropdown__arrow-container.q-btn--outline{border-left:1px solid}.q-btn-dropdown--split .q-btn-dropdown__arrow-container:not(.q-btn--outline){border-left:1px solid #ffffff4d}.q-btn-dropdown--simple *+.q-btn-dropdown__arrow{margin-left:8px}.q-btn-dropdown__arrow{transition:transform .28s}.q-btn-dropdown--current{flex-grow:1}.q-btn-group{border-radius:3px;box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f;vertical-align:middle}.q-btn-group>.q-btn-item{align-self:stretch;border-radius:inherit}.q-btn-group>.q-btn-item:before{box-shadow:none}.q-btn-group>.q-btn-item .q-badge--floating{right:0}.q-btn-group>.q-btn-group{box-shadow:none}.q-btn-group>.q-btn-group:first-child>.q-btn:first-child{border-bottom-left-radius:inherit;border-top-left-radius:inherit}.q-btn-group>.q-btn-group:last-child>.q-btn:last-child{border-bottom-right-radius:inherit;border-top-right-radius:inherit}.q-btn-group>.q-btn-group:not(:first-child)>.q-btn:first-child:before{border-left:0}.q-btn-group>.q-btn-group:not(:last-child)>.q-btn:last-child:before{border-right:0}.q-btn-group>.q-btn-item:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.q-btn-group>.q-btn-item:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.q-btn-group>.q-btn-item.q-btn--standard:before{z-index:-1}.q-btn-group--push{border-radius:7px}.q-btn-group--push>.q-btn--push.q-btn--actionable{transform:none}.q-btn-group--push>.q-btn--push.q-btn--actionable .q-btn__content{transition:margin-top .3s cubic-bezier(.25,.8,.5,1),margin-bottom .3s cubic-bezier(.25,.8,.5,1)}.q-btn-group--push>.q-btn--push.q-btn--actionable.q-btn--active .q-btn__content,.q-btn-group--push>.q-btn--push.q-btn--actionable:active .q-btn__content{margin-bottom:-2px;margin-top:2px}.q-btn-group--rounded{border-radius:28px}.q-btn-group--square{border-radius:0}.q-btn-group--flat,.q-btn-group--outline,.q-btn-group--unelevated{box-shadow:none}.q-btn-group--outline>.q-separator{display:none}.q-btn-group--outline>.q-btn-item+.q-btn-item:before{border-left:0}.q-btn-group--outline>.q-btn-item:not(:last-child):before{border-right:0}.q-btn-group--stretch{align-self:stretch;border-radius:0}.q-btn-group--glossy>.q-btn-item{background-image:linear-gradient(180deg,#ffffff4d,#fff0 50%,#0000001f 51%,#0000000a)!important}.q-btn-group--spread>.q-btn-group{display:flex!important}.q-btn-group--spread>.q-btn-group>.q-btn-item:not(.q-btn-dropdown__arrow-container),.q-btn-group--spread>.q-btn-item{flex:10000 1 0%;max-width:100%;min-width:0;width:auto}.q-btn-toggle,.q-card{position:relative}.q-card{background:#fff;border-radius:4px;box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f;vertical-align:top}.q-card>div:first-child,.q-card>img:first-child{border-top:0;border-top-left-radius:inherit;border-top-right-radius:inherit}.q-card>div:last-child,.q-card>img:last-child{border-bottom:0;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.q-card>div:not(:first-child),.q-card>img:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.q-card>div:not(:last-child),.q-card>img:not(:last-child){border-bottom-left-radius:0;border-bottom-right-radius:0}.q-card>div{border-left:0;border-right:0;box-shadow:none}.q-card--bordered{border:1px solid #0000001f}.q-card--dark{border-color:#ffffff47;box-shadow:0 1px 5px #fff3,0 2px 2px #ffffff24,0 3px 1px -2px #ffffff1f}.q-card__section{position:relative}.q-card__section--vert{padding:16px}.q-card__section--horiz>div:first-child,.q-card__section--horiz>img:first-child{border-bottom-left-radius:inherit;border-top-left-radius:inherit}.q-card__section--horiz>div:last-child,.q-card__section--horiz>img:last-child{border-bottom-right-radius:inherit;border-top-right-radius:inherit}.q-card__section--horiz>div:not(:first-child),.q-card__section--horiz>img:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.q-card__section--horiz>div:not(:last-child),.q-card__section--horiz>img:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.q-card__section--horiz>div{border-bottom:0;border-top:0;box-shadow:none}.q-card__actions{align-items:center;padding:8px}.q-card__actions .q-btn--rectangle{padding:0 8px}.q-card__actions--horiz>.q-btn-group+.q-btn-item,.q-card__actions--horiz>.q-btn-item+.q-btn-group,.q-card__actions--horiz>.q-btn-item+.q-btn-item{margin-left:8px}.q-card__actions--vert>.q-btn-item.q-btn--round{align-self:center}.q-card__actions--vert>.q-btn-group+.q-btn-item,.q-card__actions--vert>.q-btn-item+.q-btn-group,.q-card__actions--vert>.q-btn-item+.q-btn-item{margin-top:4px}.q-card__actions--vert>.q-btn-group>.q-btn-item{flex-grow:1}.q-card>img{border:0;display:block;max-width:100%;width:100%}.q-carousel{background-color:#fff;height:400px}.q-carousel__slide{background-position:50%;background-size:cover;min-height:100%}.q-carousel .q-carousel--padding,.q-carousel__slide{padding:16px}.q-carousel__slides-container{height:100%}.q-carousel__control{color:#fff}.q-carousel__arrow{pointer-events:none}.q-carousel__arrow .q-icon{font-size:28px}.q-carousel__arrow .q-btn{pointer-events:all}.q-carousel__next-arrow--horizontal,.q-carousel__prev-arrow--horizontal{bottom:16px;top:16px}.q-carousel__prev-arrow--horizontal{left:16px}.q-carousel__next-arrow--horizontal{right:16px}.q-carousel__next-arrow--vertical,.q-carousel__prev-arrow--vertical{left:16px;right:16px}.q-carousel__prev-arrow--vertical{top:16px}.q-carousel__next-arrow--vertical{bottom:16px}.q-carousel__navigation--bottom,.q-carousel__navigation--top{left:16px;overflow-x:auto;overflow-y:hidden;right:16px}.q-carousel__navigation--top{top:16px}.q-carousel__navigation--bottom{bottom:16px}.q-carousel__navigation--left,.q-carousel__navigation--right{bottom:16px;overflow-x:hidden;overflow-y:auto;top:16px}.q-carousel__navigation--left>.q-carousel__navigation-inner,.q-carousel__navigation--right>.q-carousel__navigation-inner{flex-direction:column}.q-carousel__navigation--left{left:16px}.q-carousel__navigation--right{right:16px}.q-carousel__navigation-inner{flex:1 1 auto}.q-carousel__navigation .q-btn{margin:6px 4px;padding:5px}.q-carousel__navigation-icon--inactive{opacity:.7}.q-carousel .q-carousel__thumbnail{border:1px solid #0000;border-radius:4px;cursor:pointer;display:inline-block;height:50px;margin:2px;opacity:.7;transition:opacity .3s;vertical-align:middle;width:auto}.q-carousel .q-carousel__thumbnail--active,.q-carousel .q-carousel__thumbnail:hover{opacity:1}.q-carousel .q-carousel__thumbnail--active{border-color:currentColor;cursor:default}.q-carousel--arrows-vertical .q-carousel--padding,.q-carousel--arrows-vertical.q-carousel--with-padding .q-carousel__slide,.q-carousel--navigation-top .q-carousel--padding,.q-carousel--navigation-top.q-carousel--with-padding .q-carousel__slide{padding-top:60px}.q-carousel--arrows-vertical .q-carousel--padding,.q-carousel--arrows-vertical.q-carousel--with-padding .q-carousel__slide,.q-carousel--navigation-bottom .q-carousel--padding,.q-carousel--navigation-bottom.q-carousel--with-padding .q-carousel__slide{padding-bottom:60px}.q-carousel--arrows-horizontal .q-carousel--padding,.q-carousel--arrows-horizontal.q-carousel--with-padding .q-carousel__slide,.q-carousel--navigation-left .q-carousel--padding,.q-carousel--navigation-left.q-carousel--with-padding .q-carousel__slide{padding-left:60px}.q-carousel--arrows-horizontal .q-carousel--padding,.q-carousel--arrows-horizontal.q-carousel--with-padding .q-carousel__slide,.q-carousel--navigation-right .q-carousel--padding,.q-carousel--navigation-right.q-carousel--with-padding .q-carousel__slide{padding-right:60px}.q-carousel.fullscreen{height:100%}.q-message-label,.q-message-name,.q-message-stamp{font-size:small}.q-message-label{margin:24px 0;text-align:center}.q-message-stamp{color:inherit;display:none;margin-top:4px;opacity:.6}.q-message-avatar{border-radius:50%;height:48px;min-width:48px;width:48px}.q-message{margin-bottom:8px}.q-message:first-child .q-message-label{margin-top:0}.q-message-avatar--received{margin-right:8px}.q-message-text--received{border-radius:4px 4px 4px 0;color:#81c784}.q-message-text--received:last-child:before{border-bottom:8px solid;border-left:8px solid #0000;border-right:0 solid #0000;right:100%}.q-message-text-content--received{color:#000}.q-message-name--sent{text-align:right}.q-message-avatar--sent{margin-left:8px}.q-message-container--sent{flex-direction:row-reverse}.q-message-text--sent{border-radius:4px 4px 0 4px;color:#e0e0e0}.q-message-text--sent:last-child:before{border-bottom:8px solid;border-left:0 solid #0000;border-right:8px solid #0000;left:100%}.q-message-text-content--sent{color:#000}.q-message-text{background:currentColor;line-height:1.2;padding:8px;position:relative;word-break:break-word}.q-message-text+.q-message-text{margin-top:3px}.q-message-text:last-child{min-height:48px}.q-message-text:last-child .q-message-stamp{display:block}.q-message-text:last-child:before{bottom:0;content:"";height:0;position:absolute;width:0}.q-checkbox{vertical-align:middle}.q-checkbox__native{height:1px;width:1px}.q-checkbox__bg,.q-checkbox__icon-container{-webkit-user-select:none;user-select:none}.q-checkbox__bg{border:2px solid;border-radius:2px;height:50%;left:25%;-webkit-print-color-adjust:exact;top:25%;transition:background .22s cubic-bezier(0,0,.2,1) 0ms;width:50%}.q-checkbox__icon{color:currentColor;font-size:.5em}.q-checkbox__svg{color:#fff}.q-checkbox__truthy{stroke:currentColor;stroke-width:3.12px;stroke-dashoffset:29.78334;stroke-dasharray:29.78334}.q-checkbox__indet{fill:currentColor;transform:rotate(-280deg) scale(0);transform-origin:50% 50%}.q-checkbox__inner{border-radius:50%;color:#0000008a;font-size:40px;height:1em;min-width:1em;outline:0;width:1em}.q-checkbox__inner--indet,.q-checkbox__inner--truthy{color:var(--q-primary)}.q-checkbox__inner--indet .q-checkbox__bg,.q-checkbox__inner--truthy .q-checkbox__bg{background:currentColor}.q-checkbox__inner--truthy path{stroke-dashoffset:0;transition:stroke-dashoffset .18s cubic-bezier(.4,0,.6,1) 0ms}.q-checkbox__inner--indet .q-checkbox__indet{transform:rotate(0) scale(1);transition:transform .22s cubic-bezier(0,0,.2,1) 0ms}.q-checkbox.disabled{opacity:.75!important}.q-checkbox--dark .q-checkbox__inner{color:#ffffffb3}.q-checkbox--dark .q-checkbox__inner:before{opacity:.32!important}.q-checkbox--dark .q-checkbox__inner--indet,.q-checkbox--dark .q-checkbox__inner--truthy{color:var(--q-primary)}.q-checkbox--dense .q-checkbox__inner{height:.5em;min-width:.5em;width:.5em}.q-checkbox--dense .q-checkbox__bg{height:90%;left:5%;top:5%;width:90%}.q-checkbox--dense .q-checkbox__label{padding-left:.5em}.q-checkbox--dense.reverse .q-checkbox__label{padding-left:0;padding-right:.5em}body.desktop .q-checkbox:not(.disabled) .q-checkbox__inner:before{background:currentColor;border-radius:50%;bottom:0;content:"";left:0;opacity:.12;position:absolute;right:0;top:0;transform:scale3d(0,0,1);transition:transform .22s cubic-bezier(0,0,.2,1)}body.desktop .q-checkbox:not(.disabled):focus .q-checkbox__inner:before,body.desktop .q-checkbox:not(.disabled):hover .q-checkbox__inner:before{transform:scaleX(1)}body.desktop .q-checkbox--dense:not(.disabled):focus .q-checkbox__inner:before,body.desktop .q-checkbox--dense:not(.disabled):hover .q-checkbox__inner:before{transform:scale3d(1.4,1.4,1)}.q-chip{background:#e0e0e0;border-radius:16px;color:#000000de;font-size:14px;height:2em;margin:4px;max-width:100%;outline:0;padding:.5em .9em;position:relative;vertical-align:middle}.q-chip--colored .q-chip__icon,.q-chip--dark .q-chip__icon{color:inherit}.q-chip--outline{background:#0000!important;border:1px solid}.q-chip .q-avatar{border-radius:16px;font-size:2em;margin-left:-.45em;margin-right:.2em}.q-chip--selected .q-avatar{display:none}.q-chip__icon{color:#0000008a;font-size:1.5em;margin:-.2em}.q-chip__icon--left{margin-right:.2em}.q-chip__icon--right{margin-left:.2em}.q-chip__icon--remove{margin-left:.1em;margin-right:-.5em;opacity:.6;outline:0}.q-chip__icon--remove:focus,.q-chip__icon--remove:hover{opacity:1}.q-chip__content{white-space:nowrap}.q-chip--dense{border-radius:12px;height:1.5em;padding:0 .4em}.q-chip--dense .q-avatar{border-radius:12px;font-size:1.5em;margin-left:-.27em;margin-right:.1em}.q-chip--dense .q-chip__icon{font-size:1.25em}.q-chip--dense .q-chip__icon--left{margin-right:.195em}.q-chip--dense .q-chip__icon--remove{margin-right:-.25em}.q-chip--square{border-radius:4px}.q-chip--square .q-avatar{border-radius:3px 0 0 3px}body.desktop .q-chip--clickable:focus{box-shadow:0 1px 3px #0003,0 1px 1px #00000024,0 2px 1px -1px #0000001f}body.desktop.body--dark .q-chip--clickable:focus{box-shadow:0 1px 3px #fff3,0 1px 1px #ffffff24,0 2px 1px -1px #ffffff1f}.q-circular-progress{display:inline-block;height:1em;line-height:1;position:relative;vertical-align:middle;width:1em}.q-circular-progress.q-focusable{border-radius:50%}.q-circular-progress__svg{height:100%;width:100%}.q-circular-progress__text{font-size:.25em}.q-circular-progress--indeterminate .q-circular-progress__svg{animation:q-spin 2s linear infinite;transform-origin:50% 50%}.q-circular-progress--indeterminate .q-circular-progress__circle{stroke-dasharray:1 400;stroke-dashoffset:0;animation:q-circular-progress-circle 1.5s ease-in-out infinite}@keyframes q-circular-progress-circle{0%{stroke-dasharray:1,400;stroke-dashoffset:0}50%{stroke-dasharray:400,400;stroke-dashoffset:-100}to{stroke-dasharray:400,400;stroke-dashoffset:-300}}.q-color-picker{background:#fff;border-radius:4px;box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f;max-width:350px;min-width:180px;overflow:hidden;vertical-align:top}.q-color-picker .q-tab{padding:0!important}.q-color-picker--bordered{border:1px solid #0000001f}.q-color-picker__header-tabs{height:32px}.q-color-picker__header input{border:0;line-height:24px}.q-color-picker__header .q-tab{height:32px!important;min-height:32px!important}.q-color-picker__header .q-tab--inactive{background:linear-gradient(0deg,#0000004d 0,#00000026 25%,#0000001a)}.q-color-picker__error-icon{bottom:2px;font-size:24px;opacity:0;right:2px;transition:opacity .3s ease-in}.q-color-picker__header-content{background:#fff;position:relative}.q-color-picker__header-content--light{color:#000}.q-color-picker__header-content--dark{color:#fff}.q-color-picker__header-content--dark .q-tab--inactive:before{background:#fff3;bottom:0;content:"";left:0;position:absolute;right:0;top:0}.q-color-picker__header-banner{height:36px}.q-color-picker__header-bg{background:#fff;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAH0lEQVQoU2NkYGAwZkAFZ5G5jPRRgOYEVDeB3EBjBQBOZwTVugIGyAAAAABJRU5ErkJggg==")!important}.q-color-picker__footer{height:36px}.q-color-picker__footer .q-tab{height:36px!important;min-height:36px!important}.q-color-picker__footer .q-tab--inactive{background:linear-gradient(180deg,#0000004d 0,#00000026 25%,#0000001a)}.q-color-picker__spectrum{height:100%;width:100%}.q-color-picker__spectrum-tab{padding:0!important}.q-color-picker__spectrum-white{background:linear-gradient(90deg,#fff,#fff0)}.q-color-picker__spectrum-black{background:linear-gradient(0deg,#000,#0000)}.q-color-picker__spectrum-circle{border-radius:50%;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px #0000004d,0 0 1px 2px #0006;height:10px;transform:translate(-5px,-5px);width:10px}.q-color-picker__hue .q-slider__track{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)!important;opacity:1}.q-color-picker__alpha .q-slider__track-container{padding-top:0}.q-color-picker__alpha .q-slider__track:before{background:linear-gradient(90deg,#fff0,#757575);border-radius:inherit;bottom:0;content:"";left:0;position:absolute;right:0;top:0}.q-color-picker__sliders{padding:0 16px}.q-color-picker__sliders .q-slider__thumb{color:#424242}.q-color-picker__sliders .q-slider__thumb path{stroke-width:2px;fill:#0000}.q-color-picker__sliders .q-slider--active path{stroke-width:3px}.q-color-picker__tune-tab .q-slider{margin-left:18px;margin-right:18px}.q-color-picker__tune-tab input{border:1px solid #e0e0e0;border-radius:4px;font-size:11px;width:3.5em}.q-color-picker__palette-tab{padding:0!important}.q-color-picker__palette-rows--editable .q-color-picker__cube{cursor:pointer}.q-color-picker__cube{padding-bottom:10%;width:10%!important}.q-color-picker input{background:#0000;color:inherit;outline:0;text-align:center}.q-color-picker .q-tabs{overflow:hidden}.q-color-picker .q-tab--active{box-shadow:0 0 14px 3px #0003}.q-color-picker .q-tab--active .q-focus-helper,.q-color-picker .q-tab__indicator{display:none}.q-color-picker .q-tab-panels{background:inherit}.q-color-picker--dark{box-shadow:0 1px 5px #fff3,0 2px 2px #ffffff24,0 3px 1px -2px #ffffff1f}.q-color-picker--dark .q-color-picker__tune-tab input{border:1px solid #ffffff4d}.q-color-picker--dark .q-slider__thumb{color:#fafafa}.q-date{background:#fff;border-radius:4px;box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f;display:inline-flex;max-width:100%;min-width:290px;width:290px}.q-date--bordered{border:1px solid #0000001f}.q-date__header{background-color:var(--q-primary);border-top-left-radius:inherit;color:#fff;padding:16px}.q-date__actions{padding:0 16px 16px}.q-date__content,.q-date__main{outline:0}.q-date__content .q-btn{font-weight:400}.q-date__header-link{opacity:.64;outline:0;transition:opacity .3s ease-out}.q-date__header-link--active,.q-date__header-link:focus,.q-date__header-link:hover{opacity:1}.q-date__header-subtitle{font-size:14px;letter-spacing:.00938em;line-height:1.75}.q-date__header-title-label{font-size:24px;letter-spacing:.00735em;line-height:1.2}.q-date__view{height:100%;min-height:290px;padding:16px;width:100%}.q-date__navigation{height:12.5%}.q-date__navigation>div:first-child{justify-content:flex-end;min-width:24px;width:8%}.q-date__navigation>div:last-child{justify-content:flex-start;min-width:24px;width:8%}.q-date__calendar-weekdays{height:12.5%}.q-date__calendar-weekdays>div{font-size:12px;opacity:.38}.q-date__calendar-item{align-items:center;display:inline-flex;height:12.5%!important;justify-content:center;padding:1px;position:relative;vertical-align:middle;width:14.285%!important}.q-date__calendar-item:after{border:1px dashed #0000;bottom:1px;content:"";left:0;pointer-events:none;position:absolute;right:0;top:1px}.q-date__calendar-item button,.q-date__calendar-item>div{border-radius:50%;height:30px;width:30px}.q-date__calendar-item>div{line-height:30px;text-align:center}.q-date__calendar-item>button{line-height:22px}.q-date__calendar-item--out{opacity:.18}.q-date__calendar-item--fill{visibility:hidden}.q-date__range-from:before,.q-date__range-to:before,.q-date__range:before{background-color:currentColor;bottom:1px;content:"";left:0;opacity:.3;position:absolute;right:0;top:1px}.q-date__range-from:nth-child(7n-6):before,.q-date__range-to:nth-child(7n-6):before,.q-date__range:nth-child(7n-6):before{border-bottom-left-radius:0;border-top-left-radius:0}.q-date__range-from:nth-child(7n):before,.q-date__range-to:nth-child(7n):before,.q-date__range:nth-child(7n):before{border-bottom-right-radius:0;border-top-right-radius:0}.q-date__range-from:before{left:50%}.q-date__range-to:before{right:50%}.q-date__edit-range:after{border-color:currentColor #0000}.q-date__edit-range:nth-child(7n-6):after{border-bottom-left-radius:0;border-top-left-radius:0}.q-date__edit-range:nth-child(7n):after{border-bottom-right-radius:0;border-top-right-radius:0}.q-date__edit-range-from-to:after,.q-date__edit-range-from:after{border-bottom-color:initial;border-bottom-left-radius:28px;border-left-color:initial;border-top-color:initial;border-top-left-radius:28px;left:4px}.q-date__edit-range-from-to:after,.q-date__edit-range-to:after{border-bottom-color:initial;border-bottom-right-radius:28px;border-right-color:initial;border-top-color:initial;border-top-right-radius:28px;right:4px}.q-date__calendar-days-container{height:75%;min-height:192px}.q-date__calendar-days>div{height:16.66%!important}.q-date__event{background-color:var(--q-secondary);border-radius:5px;bottom:2px;height:5px;left:50%;position:absolute;transform:translate3d(-50%,0,0);width:8px}.q-date__today{box-shadow:0 0 1px 0 currentColor}.q-date__years-content{padding:0 8px}.q-date__months-item,.q-date__years-item{flex:0 0 33.3333%}.q-date--readonly .q-date__content,.q-date--readonly .q-date__header,.q-date.disabled .q-date__content,.q-date.disabled .q-date__header{pointer-events:none}.q-date--readonly .q-date__navigation{display:none}.q-date--portrait{flex-direction:column}.q-date--portrait-standard .q-date__content{height:calc(100% - 86px)}.q-date--portrait-standard .q-date__header{border-top-right-radius:inherit;height:86px}.q-date--portrait-standard .q-date__header-title{align-items:center;height:30px}.q-date--portrait-minimal .q-date__content{height:100%}.q-date--landscape{align-items:stretch;flex-direction:row;min-width:420px}.q-date--landscape>div{display:flex;flex-direction:column}.q-date--landscape .q-date__content{height:100%}.q-date--landscape-standard{min-width:420px}.q-date--landscape-standard .q-date__header{border-bottom-left-radius:inherit;min-width:110px;width:110px}.q-date--landscape-standard .q-date__header-title{flex-direction:column}.q-date--landscape-standard .q-date__header-today{margin-left:-8px;margin-top:12px}.q-date--landscape-minimal{width:310px}.q-date--dark{border-color:#ffffff47;box-shadow:0 1px 5px #fff3,0 2px 2px #ffffff24,0 3px 1px -2px #ffffff1f}.q-dialog__title{font-size:1.25rem;font-weight:500;letter-spacing:.0125em;line-height:2rem}.q-dialog__progress{font-size:4rem}.q-dialog__inner{outline:0}.q-dialog__inner>div{-webkit-overflow-scrolling:touch;border-radius:4px;overflow:auto;pointer-events:all;will-change:scroll-position}.q-dialog__inner--square>div{border-radius:0!important}.q-dialog__inner>.q-card>.q-card__actions .q-btn--rectangle{min-width:64px}.q-dialog__inner--minimized{padding:24px}.q-dialog__inner--minimized>div{max-height:calc(100vh - 48px)}.q-dialog__inner--maximized>div{border-radius:0!important;height:100%;left:0!important;max-height:100vh;max-width:100vw;top:0!important;width:100%}.q-dialog__inner--bottom,.q-dialog__inner--top{padding-bottom:0!important;padding-top:0!important}.q-dialog__inner--left,.q-dialog__inner--right{padding-left:0!important;padding-right:0!important}.q-dialog__inner--left:not(.q-dialog__inner--animating)>div,.q-dialog__inner--top:not(.q-dialog__inner--animating)>div{border-top-left-radius:0}.q-dialog__inner--right:not(.q-dialog__inner--animating)>div,.q-dialog__inner--top:not(.q-dialog__inner--animating)>div{border-top-right-radius:0}.q-dialog__inner--bottom:not(.q-dialog__inner--animating)>div,.q-dialog__inner--left:not(.q-dialog__inner--animating)>div{border-bottom-left-radius:0}.q-dialog__inner--bottom:not(.q-dialog__inner--animating)>div,.q-dialog__inner--right:not(.q-dialog__inner--animating)>div{border-bottom-right-radius:0}.q-dialog__inner--fullwidth>div{max-width:100%!important;width:100%!important}.q-dialog__inner--fullheight>div{height:100%!important;max-height:100%!important}.q-dialog__backdrop{background:#0006;outline:0;pointer-events:all;z-index:-1}body.platform-android:not(.native-mobile) .q-dialog__inner--minimized>div,body.platform-ios .q-dialog__inner--minimized>div{max-height:calc(100vh - 108px)}body.q-ios-padding .q-dialog__inner{padding-bottom:env(safe-area-inset-bottom)!important;padding-top:env(safe-area-inset-top)!important}body.q-ios-padding .q-dialog__inner>div{max-height:calc(100vh - env(safe-area-inset-top) - env(safe-area-inset-bottom))!important}@media (max-width:599.98px){.q-dialog__inner--bottom,.q-dialog__inner--top{padding-left:0;padding-right:0}.q-dialog__inner--bottom>div,.q-dialog__inner--top>div{width:100%!important}}@media (min-width:600px){.q-dialog__inner--minimized>div{max-width:560px}}.q-body--dialog{overflow:hidden}.q-bottom-sheet{padding-bottom:8px}.q-bottom-sheet__avatar{border-radius:50%}.q-bottom-sheet--list{width:400px}.q-bottom-sheet--list .q-icon,.q-bottom-sheet--list img{font-size:24px;height:24px;width:24px}.q-bottom-sheet--grid{width:700px}.q-bottom-sheet--grid .q-bottom-sheet__item{min-width:100px;padding:8px;text-align:center}.q-bottom-sheet--grid .q-bottom-sheet__empty-icon,.q-bottom-sheet--grid .q-icon,.q-bottom-sheet--grid img{font-size:48px;height:48px;margin-bottom:8px;width:48px}.q-bottom-sheet--grid .q-separator{margin:12px 0}.q-bottom-sheet__item{flex:0 0 33.3333%}@media (min-width:600px){.q-bottom-sheet__item{flex:0 0 25%}}.q-dialog-plugin{width:400px}.q-dialog-plugin__form{max-height:50vh}.q-dialog-plugin .q-card__section+.q-card__section{padding-top:0}.q-dialog-plugin--progress{text-align:center}.q-editor{background-color:#fff;border:1px solid #0000001f;border-radius:4px}.q-editor.disabled{border-style:dashed}.q-editor>div:first-child,.q-editor__toolbars-container,.q-editor__toolbars-container>div:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.q-editor__content{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;max-width:100%;min-height:10em;outline:0;overflow:auto;padding:10px}.q-editor__content pre{white-space:pre-wrap}.q-editor__content hr{background:#0000001f;border:0;height:1px;margin:1px;outline:0}.q-editor__content:empty:not(:focus):before{content:attr(placeholder);opacity:.7}.q-editor__toolbar{border-bottom:1px solid #0000001f;min-height:32px}.q-editor__toolbars-container{max-width:100%}.q-editor .q-btn{margin:4px}.q-editor__toolbar-group{margin:0 4px;position:relative}.q-editor__toolbar-group+.q-editor__toolbar-group:before{background:#0000001f;bottom:4px;content:"";left:-4px;position:absolute;top:4px;width:1px}.q-editor__link-input{background:none;border:none;border-radius:0;color:inherit;outline:0;text-decoration:none;text-transform:none}.q-editor--flat,.q-editor--flat .q-editor__toolbar{border:0}.q-editor--dense .q-editor__toolbar-group{align-items:center;display:flex;flex-wrap:nowrap}.q-editor--dark{border-color:#ffffff47}.q-editor--dark .q-editor__content hr{background:#ffffff47}.q-editor--dark .q-editor__toolbar{border-color:#ffffff47}.q-editor--dark .q-editor__toolbar-group+.q-editor__toolbar-group:before{background:#ffffff47}.q-expansion-item__border{opacity:0}.q-expansion-item__toggle-icon{position:relative;transition:transform .3s}.q-expansion-item__toggle-icon--rotated{transform:rotate(180deg)}.q-expansion-item__toggle-focus{height:1em!important;position:relative!important;width:1em!important}.q-expansion-item__toggle-focus+.q-expansion-item__toggle-icon{margin-top:-1em}.q-expansion-item--standard.q-expansion-item--expanded>div>.q-expansion-item__border{opacity:1}.q-expansion-item--popup{transition:padding .5s}.q-expansion-item--popup>.q-expansion-item__container{border:1px solid #0000001f}.q-expansion-item--popup>.q-expansion-item__container>.q-separator{display:none}.q-expansion-item--popup.q-expansion-item--collapsed{padding:0 15px}.q-expansion-item--popup.q-expansion-item--expanded{padding:15px 0}.q-expansion-item--popup.q-expansion-item--expanded+.q-expansion-item--popup.q-expansion-item--expanded{padding-top:0}.q-expansion-item--popup.q-expansion-item--collapsed:not(:first-child)>.q-expansion-item__container{border-top-width:0}.q-expansion-item--popup.q-expansion-item--expanded+.q-expansion-item--popup.q-expansion-item--collapsed>.q-expansion-item__container{border-top-width:1px}.q-expansion-item__content>.q-card{border-radius:0;box-shadow:none}.q-expansion-item--expanded+.q-expansion-item--expanded>div>.q-expansion-item__border--top,.q-expansion-item:first-child>div>.q-expansion-item__border--top,.q-expansion-item:last-child>div>.q-expansion-item__border--bottom{opacity:0}.q-expansion-item--expanded .q-textarea--autogrow textarea{animation:q-expansion-done 0s}@keyframes q-expansion-done{0%{--q-exp-done:1}}.z-fab{z-index:990}.q-fab{position:relative;vertical-align:middle}.q-fab>.q-btn{width:100%}.q-fab--form-rounded{border-radius:28px}.q-fab--form-square{border-radius:4px}.q-fab__active-icon,.q-fab__icon{transition:opacity .4s,transform .4s}.q-fab__icon{opacity:1;transform:rotate(0deg)}.q-fab__active-icon{opacity:0;transform:rotate(-180deg)}.q-fab__label--external{padding:0 8px;position:absolute;transition:opacity .18s cubic-bezier(.65,.815,.735,.395)}.q-fab__label--external-hidden{opacity:0;pointer-events:none}.q-fab__label--external-left{left:-12px;top:50%;transform:translate(-100%,-50%)}.q-fab__label--external-right{right:-12px;top:50%;transform:translate(100%,-50%)}.q-fab__label--external-bottom{bottom:-12px;left:50%;transform:translate(-50%,100%)}.q-fab__label--external-top{left:50%;top:-12px;transform:translate(-50%,-100%)}.q-fab__label--internal{max-height:30px;padding:0;transition:font-size .12s cubic-bezier(.65,.815,.735,.395),max-height .12s cubic-bezier(.65,.815,.735,.395),opacity .07s cubic-bezier(.65,.815,.735,.395)}.q-fab__label--internal-hidden{font-size:0;opacity:0}.q-fab__label--internal-top{padding-bottom:.12em}.q-fab__label--internal-bottom{padding-top:.12em}.q-fab__label--internal-bottom.q-fab__label--internal-hidden,.q-fab__label--internal-top.q-fab__label--internal-hidden{max-height:0}.q-fab__label--internal-left{padding-left:.285em;padding-right:.571em}.q-fab__label--internal-right{padding-left:.571em;padding-right:.285em}.q-fab__icon-holder{min-height:24px;min-width:24px;position:relative}.q-fab__icon-holder--opened .q-fab__icon{opacity:0;transform:rotate(180deg)}.q-fab__icon-holder--opened .q-fab__active-icon{opacity:1;transform:rotate(0deg)}.q-fab__actions{align-items:center;align-self:center;justify-content:center;opacity:0;padding:3px;pointer-events:none;position:absolute;transition:transform .18s ease-in,opacity .18s ease-in}.q-fab__actions .q-btn{margin:5px}.q-fab__actions--right{height:56px;left:100%;margin-left:9px;transform:scale(.4) translateX(-62px);transform-origin:0 50%}.q-fab__actions--left{flex-direction:row-reverse;height:56px;margin-right:9px;right:100%;transform:scale(.4) translateX(62px);transform-origin:100% 50%}.q-fab__actions--up{bottom:100%;flex-direction:column-reverse;margin-bottom:9px;transform:scale(.4) translateY(62px);transform-origin:50% 100%;width:56px}.q-fab__actions--down{flex-direction:column;margin-top:9px;top:100%;transform:scale(.4) translateY(-62px);transform-origin:50% 0;width:56px}.q-fab__actions--down,.q-fab__actions--up{left:50%;margin-left:-28px}.q-fab__actions--opened{opacity:1;pointer-events:all;transform:scale(1) translate(.1px)}.q-fab--align-left>.q-fab__actions--down,.q-fab--align-left>.q-fab__actions--up{align-items:flex-start;left:28px}.q-fab--align-right>.q-fab__actions--down,.q-fab--align-right>.q-fab__actions--up{align-items:flex-end;left:auto;right:0}.q-field{font-size:14px}.q-field ::-ms-clear,.q-field ::-ms-reveal{display:none}.q-field--with-bottom{padding-bottom:20px}.q-field__marginal{color:#0000008a;font-size:24px;height:56px}.q-field__marginal>*+*{margin-left:2px}.q-field__marginal .q-avatar{font-size:32px}.q-field__before,.q-field__prepend{padding-right:12px}.q-field__after,.q-field__append{padding-left:12px}.q-field__after:empty,.q-field__append:empty{display:none}.q-field__append+.q-field__append{padding-left:2px}.q-field__inner{text-align:left}.q-field__bottom{backface-visibility:hidden;color:#0000008a;font-size:12px;line-height:1;min-height:20px;padding:8px 12px 0}.q-field__bottom--animated{bottom:0;left:0;position:absolute;right:0;transform:translateY(100%)}.q-field__messages{line-height:1}.q-field__messages>div{word-wrap:break-word;overflow-wrap:break-word;word-break:break-word}.q-field__messages>div+div{margin-top:4px}.q-field__counter{line-height:1;padding-left:8px}.q-field--item-aligned{padding:8px 16px}.q-field--item-aligned .q-field__before{min-width:56px}.q-field__control-container{height:inherit}.q-field__control{color:var(--q-primary);height:56px;max-width:100%;outline:none}.q-field__control:after,.q-field__control:before{bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.q-field__control:before{border-radius:inherit}.q-field__shadow{opacity:0;overflow:hidden;top:8px;white-space:pre-wrap}.q-field__shadow,.q-field__shadow+.q-field__native::placeholder{transition:opacity .36s cubic-bezier(.4,0,.2,1)}.q-field__shadow+.q-field__native:focus::placeholder{opacity:0}.q-field__input,.q-field__native,.q-field__prefix,.q-field__suffix{background:none;border:none;border-radius:0;color:#000000de;font-weight:400;letter-spacing:.00937em;line-height:28px;outline:0;padding:6px 0;text-decoration:inherit;text-transform:inherit}.q-field__input,.q-field__native{min-width:0;outline:0!important;-webkit-user-select:auto;user-select:auto;width:100%}.q-field__input:-webkit-autofill,.q-field__native:-webkit-autofill{-webkit-animation-fill-mode:both;-webkit-animation-name:q-autofill}.q-field__input:-webkit-autofill+.q-field__label,.q-field__native:-webkit-autofill+.q-field__label{transform:translateY(-40%) scale(.75)}.q-field__input[type=color]+.q-field__label,.q-field__input[type=date]+.q-field__label,.q-field__input[type=datetime-local]+.q-field__label,.q-field__input[type=month]+.q-field__label,.q-field__input[type=time]+.q-field__label,.q-field__input[type=week]+.q-field__label,.q-field__native[type=color]+.q-field__label,.q-field__native[type=date]+.q-field__label,.q-field__native[type=datetime-local]+.q-field__label,.q-field__native[type=month]+.q-field__label,.q-field__native[type=time]+.q-field__label,.q-field__native[type=week]+.q-field__label{transform:translateY(-40%) scale(.75)}.q-field__input:invalid,.q-field__native:invalid{box-shadow:none}.q-field__native[type=file]{line-height:1em}.q-field__input{height:0;line-height:24px;min-height:24px;padding:0}.q-field__prefix,.q-field__suffix{transition:opacity .36s cubic-bezier(.4,0,.2,1);white-space:nowrap}.q-field__prefix{padding-right:4px}.q-field__suffix{padding-left:4px}.q-field--disabled .q-placeholder,.q-field--readonly .q-placeholder{opacity:1!important}.q-field--readonly.q-field--labeled .q-field__input,.q-field--readonly.q-field--labeled .q-field__native{cursor:default}.q-field--readonly.q-field--float .q-field__input,.q-field--readonly.q-field--float .q-field__native{cursor:text}.q-field--disabled .q-field__inner{cursor:not-allowed}.q-field--disabled .q-field__control{pointer-events:none}.q-field--disabled .q-field__control>div{opacity:.6!important}.q-field--disabled .q-field__control>div,.q-field--disabled .q-field__control>div *{outline:0!important}.q-field__label{backface-visibility:hidden;color:#0009;font-size:16px;font-weight:400;left:0;letter-spacing:.00937em;line-height:20px;max-width:100%;text-decoration:inherit;text-transform:inherit;top:18px;transform-origin:left top;transition:transform .36s cubic-bezier(.4,0,.2,1),max-width .324s cubic-bezier(.4,0,.2,1)}.q-field--float .q-field__label{max-width:133%;transform:translateY(-40%) scale(.75);transition:transform .36s cubic-bezier(.4,0,.2,1),max-width .396s cubic-bezier(.4,0,.2,1)}.q-field--highlighted .q-field__label{color:currentColor}.q-field--highlighted .q-field__shadow{opacity:.5}.q-field--filled .q-field__control{background:#0000000d;border-radius:4px 4px 0 0;padding:0 12px}.q-field--filled .q-field__control:before{background:#0000000d;border-bottom:1px solid #0000006b;opacity:0;transition:opacity .36s cubic-bezier(.4,0,.2,1),background .36s cubic-bezier(.4,0,.2,1)}.q-field--filled .q-field__control:hover:before{opacity:1}.q-field--filled .q-field__control:after{background:currentColor;height:2px;top:auto;transform:scaleX(0);transform-origin:center bottom;transition:transform .36s cubic-bezier(.4,0,.2,1)}.q-field--filled.q-field--rounded .q-field__control{border-radius:28px 28px 0 0}.q-field--filled.q-field--highlighted .q-field__control:before{background:#0000001f;opacity:1}.q-field--filled.q-field--highlighted .q-field__control:after{transform:scaleX(1)}.q-field--filled.q-field--dark .q-field__control,.q-field--filled.q-field--dark .q-field__control:before{background:#ffffff12}.q-field--filled.q-field--dark.q-field--highlighted .q-field__control:before{background:#ffffff1a}.q-field--filled.q-field--readonly .q-field__control:before{background:#0000;border-bottom-style:dashed;opacity:1}.q-field--outlined .q-field__control{border-radius:4px;padding:0 12px}.q-field--outlined .q-field__control:before{border:1px solid #0000003d;transition:border-color .36s cubic-bezier(.4,0,.2,1)}.q-field--outlined .q-field__control:hover:before{border-color:#000}.q-field--outlined .q-field__control:after{border:2px solid #0000;border-radius:inherit;height:inherit;transition:border-color .36s cubic-bezier(.4,0,.2,1)}.q-field--outlined .q-field__input:-webkit-autofill,.q-field--outlined .q-field__native:-webkit-autofill{margin-bottom:1px;margin-top:1px}.q-field--outlined.q-field--rounded .q-field__control{border-radius:28px}.q-field--outlined.q-field--highlighted .q-field__control:hover:before{border-color:#0000}.q-field--outlined.q-field--highlighted .q-field__control:after{border-color:currentColor;border-width:2px;transform:scaleX(1)}.q-field--outlined.q-field--readonly .q-field__control:before{border-style:dashed}.q-field--standard .q-field__control:before{border-bottom:1px solid #0000003d;transition:border-color .36s cubic-bezier(.4,0,.2,1)}.q-field--standard .q-field__control:hover:before{border-color:#000}.q-field--standard .q-field__control:after{background:currentColor;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;height:2px;top:auto;transform:scaleX(0);transform-origin:center bottom;transition:transform .36s cubic-bezier(.4,0,.2,1)}.q-field--standard.q-field--highlighted .q-field__control:after{transform:scaleX(1)}.q-field--standard.q-field--readonly .q-field__control:before{border-bottom-style:dashed}.q-field--dark .q-field__control:before{border-color:#fff9}.q-field--dark .q-field__control:hover:before{border-color:#fff}.q-field--dark .q-field__input,.q-field--dark .q-field__native,.q-field--dark .q-field__prefix,.q-field--dark .q-field__suffix{color:#fff}.q-field--dark .q-field__bottom,.q-field--dark .q-field__marginal,.q-field--dark:not(.q-field--highlighted) .q-field__label{color:#ffffffb3}.q-field--standout .q-field__control{background:#0000000d;border-radius:4px;padding:0 12px;transition:box-shadow .36s cubic-bezier(.4,0,.2,1),background-color .36s cubic-bezier(.4,0,.2,1)}.q-field--standout .q-field__control:before{background:#00000012;opacity:0;transition:opacity .36s cubic-bezier(.4,0,.2,1),background .36s cubic-bezier(.4,0,.2,1)}.q-field--standout .q-field__control:hover:before{opacity:1}.q-field--standout.q-field--rounded .q-field__control{border-radius:28px}.q-field--standout.q-field--highlighted .q-field__control{background:#000;box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f}.q-field--standout.q-field--highlighted .q-field__append,.q-field--standout.q-field--highlighted .q-field__input,.q-field--standout.q-field--highlighted .q-field__native,.q-field--standout.q-field--highlighted .q-field__prefix,.q-field--standout.q-field--highlighted .q-field__prepend,.q-field--standout.q-field--highlighted .q-field__suffix{color:#fff}.q-field--standout.q-field--readonly .q-field__control:before{background:#0000;border:1px dashed #0000003d;opacity:1}.q-field--standout.q-field--dark .q-field__control,.q-field--standout.q-field--dark .q-field__control:before{background:#ffffff12}.q-field--standout.q-field--dark.q-field--highlighted .q-field__control{background:#fff}.q-field--standout.q-field--dark.q-field--highlighted .q-field__append,.q-field--standout.q-field--dark.q-field--highlighted .q-field__input,.q-field--standout.q-field--dark.q-field--highlighted .q-field__native,.q-field--standout.q-field--dark.q-field--highlighted .q-field__prefix,.q-field--standout.q-field--dark.q-field--highlighted .q-field__prepend,.q-field--standout.q-field--dark.q-field--highlighted .q-field__suffix{color:#000}.q-field--standout.q-field--dark.q-field--readonly .q-field__control:before{border-color:#ffffff3d}.q-field--labeled .q-field__native,.q-field--labeled .q-field__prefix,.q-field--labeled .q-field__suffix{line-height:24px;padding-bottom:8px;padding-top:24px}.q-field--labeled .q-field__shadow{top:0}.q-field--labeled:not(.q-field--float) .q-field__prefix,.q-field--labeled:not(.q-field--float) .q-field__suffix{opacity:0}.q-field--labeled:not(.q-field--float) .q-field__input::placeholder,.q-field--labeled:not(.q-field--float) .q-field__native::placeholder{color:#0000}.q-field--labeled.q-field--dense .q-field__native,.q-field--labeled.q-field--dense .q-field__prefix,.q-field--labeled.q-field--dense .q-field__suffix{padding-bottom:2px;padding-top:14px}.q-field--dense .q-field__shadow{top:0}.q-field--dense .q-field__control,.q-field--dense .q-field__marginal{height:40px}.q-field--dense .q-field__bottom{font-size:11px}.q-field--dense .q-field__label{font-size:14px;top:10px}.q-field--dense .q-field__before,.q-field--dense .q-field__prepend{padding-right:6px}.q-field--dense .q-field__after,.q-field--dense .q-field__append{padding-left:6px}.q-field--dense .q-field__append+.q-field__append{padding-left:2px}.q-field--dense .q-field__marginal .q-avatar{font-size:24px}.q-field--dense.q-field--float .q-field__label{transform:translateY(-30%) scale(.75)}.q-field--dense .q-field__input:-webkit-autofill+.q-field__label,.q-field--dense .q-field__native:-webkit-autofill+.q-field__label{transform:translateY(-30%) scale(.75)}.q-field--dense .q-field__input[type=color]+.q-field__label,.q-field--dense .q-field__input[type=date]+.q-field__label,.q-field--dense .q-field__input[type=datetime-local]+.q-field__label,.q-field--dense .q-field__input[type=month]+.q-field__label,.q-field--dense .q-field__input[type=time]+.q-field__label,.q-field--dense .q-field__input[type=week]+.q-field__label,.q-field--dense .q-field__native[type=color]+.q-field__label,.q-field--dense .q-field__native[type=date]+.q-field__label,.q-field--dense .q-field__native[type=datetime-local]+.q-field__label,.q-field--dense .q-field__native[type=month]+.q-field__label,.q-field--dense .q-field__native[type=time]+.q-field__label,.q-field--dense .q-field__native[type=week]+.q-field__label{transform:translateY(-30%) scale(.75)}.q-field--borderless .q-field__bottom,.q-field--borderless.q-field--dense .q-field__control,.q-field--standard .q-field__bottom,.q-field--standard.q-field--dense .q-field__control{padding-left:0;padding-right:0}.q-field--error .q-field__label{animation:q-field-label .36s}.q-field--error .q-field__bottom{color:var(--q-negative)}.q-field__focusable-action{background:#0000;border:0;color:inherit;cursor:pointer;opacity:.6;outline:0!important;padding:0}.q-field__focusable-action:focus,.q-field__focusable-action:hover{opacity:1}.q-field--auto-height .q-field__control{height:auto}.q-field--auto-height .q-field__control,.q-field--auto-height .q-field__native{min-height:56px}.q-field--auto-height .q-field__native{align-items:center}.q-field--auto-height .q-field__control-container{padding-top:0}.q-field--auto-height .q-field__native,.q-field--auto-height .q-field__prefix,.q-field--auto-height .q-field__suffix{line-height:18px}.q-field--auto-height.q-field--labeled .q-field__control-container{padding-top:24px}.q-field--auto-height.q-field--labeled .q-field__shadow{top:24px}.q-field--auto-height.q-field--labeled .q-field__native,.q-field--auto-height.q-field--labeled .q-field__prefix,.q-field--auto-height.q-field--labeled .q-field__suffix{padding-top:0}.q-field--auto-height.q-field--labeled .q-field__native{min-height:24px}.q-field--auto-height.q-field--dense .q-field__control,.q-field--auto-height.q-field--dense .q-field__native{min-height:40px}.q-field--auto-height.q-field--dense.q-field--labeled .q-field__control-container{padding-top:14px}.q-field--auto-height.q-field--dense.q-field--labeled .q-field__shadow{top:14px}.q-field--auto-height.q-field--dense.q-field--labeled .q-field__native{min-height:24px}.q-field--square .q-field__control{border-radius:0!important}.q-transition--field-message-enter-active,.q-transition--field-message-leave-active{transition:transform .6s cubic-bezier(.86,0,.07,1),opacity .6s cubic-bezier(.86,0,.07,1)}.q-transition--field-message-enter-from,.q-transition--field-message-leave-to{opacity:0;transform:translateY(-10px)}.q-transition--field-message-leave-active,.q-transition--field-message-leave-from{position:absolute}@keyframes q-field-label{40%{margin-left:2px}60%,80%{margin-left:-2px}70%,90%{margin-left:2px}}@keyframes q-autofill{to{background:#0000;color:inherit}}.q-file .q-field__native{overflow:hidden;word-break:break-all}.q-file .q-field__input{opacity:0!important}.q-file .q-field__input::-webkit-file-upload-button{cursor:pointer}.q-file__filler{border:none;padding:0;visibility:hidden;width:100%}.q-file__dnd{outline:1px dashed currentColor;outline-offset:-4px}.q-form,.q-img{position:relative}.q-img{display:inline-block;overflow:hidden;vertical-align:middle;width:100%}.q-img__loading .q-spinner{font-size:50px}.q-img__container{border-radius:inherit;font-size:0}.q-img__image{border-radius:inherit;height:100%;opacity:0;width:100%}.q-img__image--with-transition{transition:opacity .28s ease-in}.q-img__image--loaded{opacity:1}.q-img__content{border-radius:inherit;pointer-events:none}.q-img__content>div{background:#00000078;color:#fff;padding:16px;pointer-events:all;position:absolute}.q-img--no-menu .q-img__image,.q-img--no-menu .q-img__placeholder{pointer-events:none}.q-inner-loading{background:#fff9}.q-inner-loading--dark{background:#0006}.q-inner-loading__label{margin-top:8px}.q-textarea .q-field__control{height:auto;min-height:56px}.q-textarea .q-field__control-container{padding-bottom:2px;padding-top:2px}.q-textarea .q-field__shadow{bottom:2px;top:2px}.q-textarea .q-field__native,.q-textarea .q-field__prefix,.q-textarea .q-field__suffix{line-height:18px}.q-textarea .q-field__native{min-height:52px;padding-top:17px;resize:vertical}.q-textarea.q-field--labeled .q-field__control-container{padding-top:26px}.q-textarea.q-field--labeled .q-field__shadow{top:26px}.q-textarea.q-field--labeled .q-field__native,.q-textarea.q-field--labeled .q-field__prefix,.q-textarea.q-field--labeled .q-field__suffix{padding-top:0}.q-textarea.q-field--labeled .q-field__native{min-height:26px;padding-top:1px}.q-textarea--autogrow .q-field__native{resize:none}.q-textarea.q-field--dense .q-field__control,.q-textarea.q-field--dense .q-field__native{min-height:36px}.q-textarea.q-field--dense .q-field__native{padding-top:9px}.q-textarea.q-field--dense.q-field--labeled .q-field__control-container{padding-top:14px}.q-textarea.q-field--dense.q-field--labeled .q-field__shadow{top:14px}.q-textarea.q-field--dense.q-field--labeled .q-field__native{min-height:24px;padding-top:3px}.q-textarea.q-field--dense.q-field--labeled .q-field__prefix,.q-textarea.q-field--dense.q-field--labeled .q-field__suffix{padding-top:2px}.q-textarea.disabled .q-field__native,body.mobile .q-textarea .q-field__native{resize:none}.q-intersection{position:relative}.q-item{color:inherit;min-height:48px;padding:8px 16px;transition:color .3s,background-color .3s}.q-item__section--side{align-items:flex-start;color:#757575;max-width:100%;min-width:0;padding-right:16px;width:auto}.q-item__section--side>.q-icon{font-size:24px}.q-item__section--side>.q-avatar{font-size:40px}.q-item__section--avatar{color:inherit;min-width:56px}.q-item__section--thumbnail img{height:56px;width:100px}.q-item__section--nowrap{white-space:nowrap}.q-item>.q-focus-helper+.q-item__section--thumbnail,.q-item>.q-item__section--thumbnail:first-child{margin-left:-16px}.q-item>.q-item__section--thumbnail:last-of-type{margin-right:-16px}.q-item__label{line-height:1.2em!important;max-width:100%}.q-item__label--overline{color:#000000b3}.q-item__label--caption{color:#0000008a}.q-item__label--header{color:#757575;font-size:.875rem;letter-spacing:.01786em;line-height:1.25rem;padding:16px}.q-list--padding .q-item__label--header,.q-separator--spaced+.q-item__label--header{padding-top:8px}.q-item__label+.q-item__label{margin-top:4px}.q-item__section--main{flex:10000 1 0%;max-width:100%;min-width:0;width:auto}.q-item__section--main+.q-item__section--main{margin-left:8px}.q-item__section--main~.q-item__section--side{align-items:flex-end;padding-left:16px;padding-right:0}.q-item__section--main.q-item__section--thumbnail{margin-left:0;margin-right:-16px}.q-list--bordered{border:1px solid #0000001f}.q-list--separator>.q-item-type+.q-item-type,.q-list--separator>.q-virtual-scroll__content>.q-item-type+.q-item-type{border-top:1px solid #0000001f}.q-list--padding{padding:8px 0}.q-item--dense,.q-list--dense>.q-item{min-height:32px;padding:2px 16px}.q-list--dark.q-list--separator>.q-item-type+.q-item-type,.q-list--dark.q-list--separator>.q-virtual-scroll__content>.q-item-type+.q-item-type{border-top-color:#ffffff47}.q-item--dark,.q-list--dark{border-color:#ffffff47;color:#fff}.q-item--dark .q-item__section--side:not(.q-item__section--avatar),.q-list--dark .q-item__section--side:not(.q-item__section--avatar){color:#ffffffb3}.q-item--dark .q-item__label--header,.q-list--dark .q-item__label--header{color:#ffffffa3}.q-item--dark .q-item__label--caption,.q-item--dark .q-item__label--overline,.q-list--dark .q-item__label--caption,.q-list--dark .q-item__label--overline{color:#fffc}.q-item{position:relative}.q-item--active,.q-item.q-router-link--active{color:var(--q-primary)}.q-knob{font-size:48px}.q-knob--editable{cursor:pointer;outline:0}.q-knob--editable:before{border-radius:50%;bottom:0;box-shadow:none;content:"";left:0;position:absolute;right:0;top:0;transition:box-shadow .24s ease-in-out}.q-knob--editable:focus:before{box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f}body.body--dark .q-knob--editable:focus:before{box-shadow:0 1px 5px #fff3,0 2px 2px #ffffff24,0 3px 1px -2px #ffffff1f}.q-layout{outline:0;width:100%}.q-layout-container{height:100%;position:relative;width:100%}.q-layout-container .q-layout{min-height:100%}.q-layout-container>div{transform:translateZ(0)}.q-layout-container>div>div{max-height:100%;min-height:0}.q-layout__shadow{width:100%}.q-layout__shadow:after{bottom:0;box-shadow:0 0 10px 2px #0003,0 0 10px #0000003d;content:"";left:0;position:absolute;right:0;top:0}.q-layout__section--marginal{background-color:var(--q-primary);color:#fff}.q-header--hidden{transform:translateY(-110%)}.q-header--bordered{border-bottom:1px solid #0000001f}.q-header .q-layout__shadow{bottom:-10px}.q-header .q-layout__shadow:after{bottom:10px}.q-footer--hidden{transform:translateY(110%)}.q-footer--bordered{border-top:1px solid #0000001f}.q-footer .q-layout__shadow{top:-10px}.q-footer .q-layout__shadow:after{top:10px}.q-footer,.q-header{z-index:2000}.q-drawer{background:#fff;bottom:0;position:absolute;top:0;z-index:1000}.q-drawer--on-top{z-index:3000}.q-drawer--left{left:0;transform:translateX(-100%)}.q-drawer--left.q-drawer--bordered{border-right:1px solid #0000001f}.q-drawer--left .q-layout__shadow{left:10px;right:-10px}.q-drawer--left .q-layout__shadow:after{right:10px}.q-drawer--right{right:0;transform:translateX(100%)}.q-drawer--right.q-drawer--bordered{border-left:1px solid #0000001f}.q-drawer--right .q-layout__shadow{left:-10px}.q-drawer--right .q-layout__shadow:after{left:10px}.q-drawer-container:not(.q-drawer--mini-animate) .q-drawer--mini{padding:0!important}.q-drawer-container:not(.q-drawer--mini-animate) .q-drawer--mini .q-item,.q-drawer-container:not(.q-drawer--mini-animate) .q-drawer--mini .q-item__section{justify-content:center;min-width:0;padding-left:0;padding-right:0;text-align:center}.q-drawer--mini .q-expansion-item__content,.q-drawer--mini .q-mini-drawer-hide,.q-drawer-container:not(.q-drawer--mini-animate) .q-drawer--mini .q-item__label,.q-drawer-container:not(.q-drawer--mini-animate) .q-drawer--mini .q-item__section--main,.q-drawer-container:not(.q-drawer--mini-animate) .q-drawer--mini .q-item__section--side~.q-item__section--side{display:none}.q-drawer--mini-animate .q-drawer__content{overflow-x:hidden!important;white-space:nowrap}.q-drawer--mobile .q-mini-drawer-hide,.q-drawer--mobile .q-mini-drawer-only,.q-drawer--standard .q-mini-drawer-only{display:none}.q-drawer__backdrop{will-change:background-color;z-index:2999!important}.q-drawer__opener{height:100%;-webkit-user-select:none;user-select:none;width:15px;z-index:2001}.q-footer,.q-header,.q-layout,.q-page{position:relative}.q-page-sticky--shrink{pointer-events:none}.q-page-sticky--shrink>div{display:inline-block;pointer-events:auto}body.q-ios-padding .q-layout--standard .q-drawer--top-padding .q-drawer__content,body.q-ios-padding .q-layout--standard .q-header>.q-tabs:first-child .q-tabs-head,body.q-ios-padding .q-layout--standard .q-header>.q-toolbar:first-child{min-height:70px;min-height:calc(env(safe-area-inset-top) + 50px);padding-top:env(safe-area-inset-top)}body.q-ios-padding .q-layout--standard .q-drawer--top-padding .q-drawer__content,body.q-ios-padding .q-layout--standard .q-footer>.q-tabs:last-child .q-tabs-head,body.q-ios-padding .q-layout--standard .q-footer>.q-toolbar:last-child{min-height:calc(env(safe-area-inset-bottom) + 50px);padding-bottom:env(safe-area-inset-bottom)}.q-body--layout-animate .q-drawer__backdrop{transition:background-color .12s!important}.q-body--layout-animate .q-drawer{transition:transform .12s,width .12s,top .12s,bottom .12s!important}.q-body--layout-animate .q-layout__section--marginal{transition:transform .12s,left .12s,right .12s!important}.q-body--layout-animate .q-page-container{transition:padding-top .12s,padding-right .12s,padding-bottom .12s,padding-left .12s!important}.q-body--layout-animate .q-page-sticky{transition:transform .12s,left .12s,right .12s,top .12s,bottom .12s!important}body:not(.q-body--layout-animate) .q-layout--prevent-focus{visibility:hidden}.q-body--drawer-toggle{overflow-x:hidden!important}@media (max-width:599.98px){.q-layout-padding{padding:8px}}@media (min-width:600px) and (max-width:1439.98px){.q-layout-padding{padding:16px}}@media (min-width:1440px){.q-layout-padding{padding:24px}}body.body--dark .q-drawer,body.body--dark .q-footer,body.body--dark .q-header{border-color:#ffffff47}body.body--dark .q-layout__shadow:after{box-shadow:0 0 10px 2px #fff3,0 0 10px #ffffff3d}body.platform-ios .q-layout--containerized{position:unset!important}.q-linear-progress{--q-linear-progress-speed:.3s;color:var(--q-primary);font-size:4px;height:1em;overflow:hidden;position:relative;transform:scaleX(1);width:100%}.q-linear-progress__model,.q-linear-progress__track{transform-origin:0 0}.q-linear-progress__model--with-transition,.q-linear-progress__track--with-transition{transition:transform var(--q-linear-progress-speed)}.q-linear-progress--reverse .q-linear-progress__model,.q-linear-progress--reverse .q-linear-progress__track{transform-origin:0 100%}.q-linear-progress__model--determinate{background:currentColor}.q-linear-progress__model--indeterminate,.q-linear-progress__model--query{transition:none}.q-linear-progress__model--indeterminate:after,.q-linear-progress__model--indeterminate:before,.q-linear-progress__model--query:after,.q-linear-progress__model--query:before{background:currentColor;bottom:0;content:"";left:0;position:absolute;right:0;top:0;transform-origin:0 0}.q-linear-progress__model--indeterminate:before,.q-linear-progress__model--query:before{animation:q-linear-progress--indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.q-linear-progress__model--indeterminate:after,.q-linear-progress__model--query:after{animation:q-linear-progress--indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation-delay:1.15s;transform:translate3d(-101%,0,0) scaleX(1)}.q-linear-progress__track{opacity:.4}.q-linear-progress__track--light{background:#00000042}.q-linear-progress__track--dark{background:#fff9}.q-linear-progress__stripe{background-image:linear-gradient(45deg,#ffffff26 25%,#fff0 0,#fff0 50%,#ffffff26 0,#ffffff26 75%,#fff0 0,#fff0)!important;background-size:40px 40px!important}.q-linear-progress__stripe--with-transition{transition:width var(--q-linear-progress-speed)}@keyframes q-linear-progress--indeterminate{0%{transform:translate3d(-35%,0,0) scaleX(.35)}60%{transform:translate3d(100%,0,0) scaleX(.9)}to{transform:translate3d(100%,0,0) scaleX(.9)}}@keyframes q-linear-progress--indeterminate-short{0%{transform:translate3d(-101%,0,0) scaleX(1)}60%{transform:translate3d(107%,0,0) scaleX(.01)}to{transform:translate3d(107%,0,0) scaleX(.01)}}.q-menu{background:#fff;border-radius:4px;box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f;display:inline-block;max-height:65vh;max-width:95vw;outline:0;overflow-x:hidden;overflow-y:auto;position:fixed!important;z-index:6000}.q-menu--square{border-radius:0}.q-menu--dark{box-shadow:0 1px 5px #fff3,0 2px 2px #ffffff24,0 3px 1px -2px #ffffff1f}.q-option-group--inline>div{display:inline-block}.q-pagination input{-moz-appearance:textfield;text-align:center}.q-pagination input::-webkit-inner-spin-button,.q-pagination input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.q-pagination__content{--q-pagination-gutter-parent:-2px;--q-pagination-gutter-child:2px;margin-left:var(--q-pagination-gutter-parent);margin-top:var(--q-pagination-gutter-parent)}.q-pagination__content>.q-btn,.q-pagination__content>.q-input,.q-pagination__middle>.q-btn{margin-left:var(--q-pagination-gutter-child);margin-top:var(--q-pagination-gutter-child)}.q-parallax{border-radius:inherit;overflow:hidden;position:relative;width:100%}.q-parallax__media>img,.q-parallax__media>video{bottom:0;display:none;left:50%;min-height:100%;min-width:100%;position:absolute;will-change:transform}.q-popup-edit{padding:8px 16px}.q-popup-edit__buttons{margin-top:8px}.q-popup-edit__buttons .q-btn+.q-btn{margin-left:8px}.q-pull-to-refresh{position:relative}.q-pull-to-refresh__puller{background:#fff;border-radius:50%;box-shadow:0 0 4px 0 #0000004d;color:var(--q-primary);height:40px;width:40px}.q-pull-to-refresh__puller--animating{transition:transform .3s,opacity .3s}.q-radio{vertical-align:middle}.q-radio__native{height:1px;width:1px}.q-radio__bg,.q-radio__icon-container{-webkit-user-select:none;user-select:none}.q-radio__bg{height:50%;left:25%;-webkit-print-color-adjust:exact;top:25%;width:50%}.q-radio__bg path{fill:currentColor}.q-radio__icon{color:currentColor;font-size:.5em}.q-radio__check{transform:scale3d(0,0,1);transform-origin:50% 50%;transition:transform .22s cubic-bezier(0,0,.2,1) 0ms}.q-radio__inner{border-radius:50%;color:#0000008a;font-size:40px;height:1em;min-width:1em;outline:0;width:1em}.q-radio__inner--truthy{color:var(--q-primary)}.q-radio__inner--truthy .q-radio__check{transform:scaleX(1)}.q-radio.disabled{opacity:.75!important}.q-radio--dark .q-radio__inner{color:#ffffffb3}.q-radio--dark .q-radio__inner:before{opacity:.32!important}.q-radio--dark .q-radio__inner--truthy{color:var(--q-primary)}.q-radio--dense .q-radio__inner{height:.5em;min-width:.5em;width:.5em}.q-radio--dense .q-radio__bg{height:100%;left:0;top:0;width:100%}.q-radio--dense .q-radio__label{padding-left:.5em}.q-radio--dense.reverse .q-radio__label{padding-left:0;padding-right:.5em}body.desktop .q-radio:not(.disabled) .q-radio__inner:before{background:currentColor;border-radius:50%;bottom:0;content:"";left:0;opacity:.12;position:absolute;right:0;top:0;transform:scale3d(0,0,1);transition:transform .22s cubic-bezier(0,0,.2,1) 0ms}body.desktop .q-radio:not(.disabled):focus .q-radio__inner:before,body.desktop .q-radio:not(.disabled):hover .q-radio__inner:before{transform:scaleX(1)}body.desktop .q-radio--dense:not(.disabled):focus .q-radio__inner:before,body.desktop .q-radio--dense:not(.disabled):hover .q-radio__inner:before{transform:scale3d(1.5,1.5,1)}.q-rating{color:#ffeb3b;vertical-align:middle}.q-rating__icon-container{height:1em;outline:0}.q-rating__icon-container+.q-rating__icon-container{margin-left:2px}.q-rating__icon{color:currentColor;opacity:.4;position:relative;text-shadow:0 1px 3px #0000001f,0 1px 2px #0000003d;transition:transform .2s ease-in,opacity .2s ease-in}.q-rating__icon--hovered{transform:scale(1.3)}.q-rating__icon--active{opacity:1}.q-rating__icon--exselected{opacity:.7}.q-rating--no-dimming .q-rating__icon{opacity:1}.q-rating--editable .q-rating__icon-container{cursor:pointer}.q-responsive{max-height:100%;max-width:100%;position:relative}.q-responsive__filler{height:inherit;max-height:inherit;max-width:inherit;width:inherit}.q-responsive__content{border-radius:inherit}.q-responsive__content>*{height:100%!important;max-height:100%!important;max-width:100%!important;width:100%!important}.q-scrollarea{contain:strict;position:relative}.q-scrollarea__bar,.q-scrollarea__thumb{cursor:grab;opacity:.2;transition:opacity .3s;will-change:opacity}.q-scrollarea__bar--v,.q-scrollarea__thumb--v{right:0;width:10px}.q-scrollarea__bar--h,.q-scrollarea__thumb--h{bottom:0;height:10px}.q-scrollarea__bar--invisible,.q-scrollarea__thumb--invisible{opacity:0!important;pointer-events:none}.q-scrollarea__thumb{background:#000;border-radius:3px}.q-scrollarea__thumb:hover{opacity:.3}.q-scrollarea__thumb:active{opacity:.5}.q-scrollarea__content{min-height:100%;min-width:100%}.q-scrollarea--dark .q-scrollarea__thumb{background:#fff}.q-select--without-input .q-field__control{cursor:pointer}.q-select--with-input .q-field__control{cursor:text}.q-select .q-field__input{cursor:text;min-width:50px!important}.q-select .q-field__input--padding{padding-left:4px}.q-select__autocomplete-input,.q-select__focus-target{border:0;height:1px;opacity:0;outline:0!important;padding:0;position:absolute;width:1px}.q-select__dropdown-icon{cursor:pointer;transition:transform .28s}.q-select.q-field--readonly .q-field__control,.q-select.q-field--readonly .q-select__dropdown-icon{cursor:default}.q-select__dialog{background:#fff;display:flex;flex-direction:column;max-height:calc(100vh - 70px)!important;max-width:90vw!important;width:90vw!important}.q-select__dialog>.scroll{background:inherit;position:relative}body.mobile:not(.native-mobile) .q-select__dialog{max-height:calc(100vh - 108px)!important}body.platform-android.native-mobile .q-dialog__inner--top .q-select__dialog{max-height:calc(100vh - 24px)!important}body.platform-android:not(.native-mobile) .q-dialog__inner--top .q-select__dialog{max-height:calc(100vh - 80px)!important}body.platform-ios.native-mobile .q-dialog__inner--top>div{border-radius:4px}body.platform-ios.native-mobile .q-dialog__inner--top .q-select__dialog--focused{max-height:47vh!important}body.platform-ios:not(.native-mobile) .q-dialog__inner--top .q-select__dialog--focused{max-height:50vh!important}.q-separator{background:#0000001f;border:0;flex-shrink:0;margin:0;transition:background .3s,opacity .3s}.q-separator--dark{background:#ffffff47}.q-separator--horizontal{display:block;height:1px}.q-separator--horizontal-inset{margin-left:16px;margin-right:16px}.q-separator--horizontal-item-inset{margin-left:72px;margin-right:0}.q-separator--horizontal-item-thumbnail-inset{margin-left:116px;margin-right:0}.q-separator--vertical{align-self:stretch;height:auto;width:1px}.q-separator--vertical-inset{margin-bottom:8px;margin-top:8px}.q-skeleton{--q-skeleton-speed:1500ms;background:#0000001f;border-radius:4px;box-sizing:border-box}.q-skeleton--anim{cursor:wait}.q-skeleton:before{content:" "}.q-skeleton--type-text{transform:scaleY(.5)}.q-skeleton--type-QAvatar,.q-skeleton--type-circle{border-radius:50%;height:48px;width:48px}.q-skeleton--type-QBtn{height:36px;width:90px}.q-skeleton--type-QBadge{height:16px;width:70px}.q-skeleton--type-QChip{border-radius:16px;height:28px;width:90px}.q-skeleton--type-QToolbar{height:50px}.q-skeleton--type-QCheckbox,.q-skeleton--type-QRadio{border-radius:50%;height:40px;width:40px}.q-skeleton--type-QToggle{border-radius:7px;height:40px;width:56px}.q-skeleton--type-QRange,.q-skeleton--type-QSlider{height:40px}.q-skeleton--type-QInput{height:56px}.q-skeleton--bordered{border:1px solid #0000000d}.q-skeleton--square{border-radius:0}.q-skeleton--anim-fade{animation:q-skeleton--fade var(--q-skeleton-speed) linear .5s infinite}.q-skeleton--anim-pulse{animation:q-skeleton--pulse var(--q-skeleton-speed) ease-in-out .5s infinite}.q-skeleton--anim-pulse-x{animation:q-skeleton--pulse-x var(--q-skeleton-speed) ease-in-out .5s infinite}.q-skeleton--anim-pulse-y{animation:q-skeleton--pulse-y var(--q-skeleton-speed) ease-in-out .5s infinite}.q-skeleton--anim-blink,.q-skeleton--anim-pop,.q-skeleton--anim-wave{overflow:hidden;position:relative;z-index:1}.q-skeleton--anim-blink:after,.q-skeleton--anim-pop:after,.q-skeleton--anim-wave:after{bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:0}.q-skeleton--anim-blink:after{animation:q-skeleton--fade var(--q-skeleton-speed) linear .5s infinite;background:#ffffffb3}.q-skeleton--anim-wave:after{animation:q-skeleton--wave var(--q-skeleton-speed) linear .5s infinite;background:linear-gradient(90deg,#fff0,#ffffff80,#fff0)}.q-skeleton--dark{background:#ffffff0d}.q-skeleton--dark.q-skeleton--bordered{border:1px solid #ffffff40}.q-skeleton--dark.q-skeleton--anim-wave:after{background:linear-gradient(90deg,#fff0,#ffffff1a,#fff0)}.q-skeleton--dark.q-skeleton--anim-blink:after{background:#fff3}@keyframes q-skeleton--fade{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes q-skeleton--pulse{0%{transform:scale(1)}50%{transform:scale(.85)}to{transform:scale(1)}}@keyframes q-skeleton--pulse-x{0%{transform:scaleX(1)}50%{transform:scaleX(.75)}to{transform:scaleX(1)}}@keyframes q-skeleton--pulse-y{0%{transform:scaleY(1)}50%{transform:scaleY(.75)}to{transform:scaleY(1)}}@keyframes q-skeleton--wave{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}.q-slide-item{background:#fff;position:relative}.q-slide-item__bottom,.q-slide-item__left,.q-slide-item__right,.q-slide-item__top{color:#fff;font-size:14px;visibility:hidden}.q-slide-item__bottom .q-icon,.q-slide-item__left .q-icon,.q-slide-item__right .q-icon,.q-slide-item__top .q-icon{font-size:1.714em}.q-slide-item__left{background:#4caf50;padding:8px 16px}.q-slide-item__left>div{transform-origin:left center}.q-slide-item__right{background:#ff9800;padding:8px 16px}.q-slide-item__right>div{transform-origin:right center}.q-slide-item__top{background:#2196f3;padding:16px 8px}.q-slide-item__top>div{transform-origin:top center}.q-slide-item__bottom{background:#9c27b0;padding:16px 8px}.q-slide-item__bottom>div{transform-origin:bottom center}.q-slide-item__content{background:inherit;cursor:pointer;transition:transform .2s ease-in;-webkit-user-select:none;user-select:none}.q-slider{position:relative}.q-slider--h{width:100%}.q-slider--v{height:200px}.q-slider--editable .q-slider__track-container{cursor:grab}.q-slider__track-container{outline:0}.q-slider__track-container--h{padding:12px 0;width:100%}.q-slider__track-container--h .q-slider__selection{will-change:width,left}.q-slider__track-container--v{height:100%;padding:0 12px}.q-slider__track-container--v .q-slider__selection{will-change:height,top}.q-slider__track{background:#0000001a;border-radius:4px;color:var(--q-primary);height:inherit;width:inherit}.q-slider__inner{background:#0000001a}.q-slider__inner,.q-slider__selection{border-radius:inherit;height:100%;width:100%}.q-slider__selection{background:currentColor}.q-slider__markers{border-radius:inherit;color:#0000004d;height:100%;width:100%}.q-slider__markers:after{background:currentColor;content:"";position:absolute}.q-slider__markers--h{background-image:repeating-linear-gradient(90deg,currentColor,currentColor 2px,#fff0 0,#fff0)}.q-slider__markers--h:after{height:100%;right:0;top:0;width:2px}.q-slider__markers--v{background-image:repeating-linear-gradient(180deg,currentColor,currentColor 2px,#fff0 0,#fff0)}.q-slider__markers--v:after{bottom:0;height:2px;left:0;width:100%}.q-slider__marker-labels-container{height:100%;min-height:24px;min-width:24px;position:relative;width:100%}.q-slider__marker-labels{position:absolute}.q-slider__marker-labels--h-standard{top:0}.q-slider__marker-labels--h-switched{bottom:0}.q-slider__marker-labels--h-ltr{transform:translateX(-50%)}.q-slider__marker-labels--h-rtl{transform:translateX(50%)}.q-slider__marker-labels--v-standard{left:4px}.q-slider__marker-labels--v-switched{right:4px}.q-slider__marker-labels--v-ltr{transform:translateY(-50%)}.q-slider__marker-labels--v-rtl{transform:translateY(50%)}.q-slider__thumb{color:var(--q-primary);outline:0;transition:transform .18s ease-out,fill .18s ease-out,stroke .18s ease-out;z-index:1}.q-slider__thumb.q-slider--focus{opacity:1!important}.q-slider__thumb--h{top:50%;will-change:left}.q-slider__thumb--h-ltr{transform:scale(1) translate(-50%,-50%)}.q-slider__thumb--h-rtl{transform:scale(1) translate(50%,-50%)}.q-slider__thumb--v{left:50%;will-change:top}.q-slider__thumb--v-ltr{transform:scale(1) translate(-50%,-50%)}.q-slider__thumb--v-rtl{transform:scale(1) translate(-50%,50%)}.q-slider__thumb-shape{stroke-width:3.5;stroke:currentColor;left:0;top:0;transition:transform .28s}.q-slider__thumb-shape path{stroke:currentColor;fill:currentColor}.q-slider__focus-ring{border-radius:50%;opacity:0;transition:transform .26667s ease-out,opacity .26667s ease-out,background-color .26667s ease-out;transition-delay:.14s}.q-slider__pin{opacity:0;transition:opacity .28s ease-out;transition-delay:.14s;white-space:nowrap}.q-slider__pin:before{content:"";height:0;position:absolute;width:0}.q-slider__pin--h:before{border-left:6px solid #0000;border-right:6px solid #0000;left:50%;transform:translateX(-50%)}.q-slider__pin--h-standard{bottom:100%}.q-slider__pin--h-standard:before{border-top:6px solid;bottom:2px}.q-slider__pin--h-switched{top:100%}.q-slider__pin--h-switched:before{border-bottom:6px solid;top:2px}.q-slider__pin--v{top:0}.q-slider__pin--v:before{border-bottom:6px solid #0000;border-top:6px solid #0000;top:50%;transform:translateY(-50%)}.q-slider__pin--v-standard{left:100%}.q-slider__pin--v-standard:before{border-right:6px solid;left:2px}.q-slider__pin--v-switched{right:100%}.q-slider__pin--v-switched:before{border-left:6px solid;right:2px}.q-slider__label{position:absolute;white-space:nowrap;z-index:1}.q-slider__label--h{left:50%;transform:translateX(-50%)}.q-slider__label--h-standard{bottom:7px}.q-slider__label--h-switched{top:7px}.q-slider__label--v{top:50%;transform:translateY(-50%)}.q-slider__label--v-standard{left:7px}.q-slider__label--v-switched{right:7px}.q-slider__text-container{background:currentColor;border-radius:4px;min-height:25px;padding:2px 8px;position:relative;text-align:center}.q-slider__text{color:#fff;font-size:12px}.q-slider--no-value .q-slider__inner,.q-slider--no-value .q-slider__selection,.q-slider--no-value .q-slider__thumb{opacity:0}.q-slider--focus .q-slider__focus-ring,body.desktop .q-slider.q-slider--editable .q-slider__track-container:hover .q-slider__focus-ring{background:currentColor;opacity:.25;transform:scale3d(1.55,1.55,1)}.q-slider--focus .q-slider__inner,.q-slider--focus .q-slider__selection,.q-slider--focus .q-slider__thumb,body.desktop .q-slider.q-slider--editable .q-slider__track-container:hover .q-slider__inner,body.desktop .q-slider.q-slider--editable .q-slider__track-container:hover .q-slider__selection,body.desktop .q-slider.q-slider--editable .q-slider__track-container:hover .q-slider__thumb{opacity:1}.q-slider--inactive .q-slider__thumb--h{transition:left .28s,right .28s}.q-slider--inactive .q-slider__thumb--v{transition:top .28s,bottom .28s}.q-slider--inactive .q-slider__selection{transition:width .28s,left .28s,right .28s,height .28s,top .28s,bottom .28s}.q-slider--inactive .q-slider__text-container{transition:transform .28s}.q-slider--active{cursor:grabbing}.q-slider--active .q-slider__thumb-shape{transform:scale(1.5)}.q-slider--active .q-slider__focus-ring,.q-slider--active.q-slider--label .q-slider__thumb-shape{transform:scale(0)!important}.q-slider--label .q-slider--focus .q-slider__pin,.q-slider--label.q-slider--active .q-slider__pin,.q-slider--label.q-slider--label-always .q-slider__pin,body.desktop .q-slider.q-slider--enabled .q-slider__track-container:hover .q-slider__pin{opacity:1}.q-slider--dark .q-slider__inner,.q-slider--dark .q-slider__track{background:#ffffff1a}.q-slider--dark .q-slider__markers{color:#ffffff4d}.q-slider--dense .q-slider__track-container--h{padding:6px 0}.q-slider--dense .q-slider__track-container--v{padding:0 6px}.q-space{flex-grow:1!important}.q-spinner{vertical-align:middle}.q-spinner-mat{animation:q-spin 2s linear infinite;transform-origin:center center}.q-spinner-mat .path{stroke-dasharray:1,200;stroke-dashoffset:0;animation:q-mat-dash 1.5s ease-in-out infinite}@keyframes q-spin{0%{transform:rotate(0deg)}25%{transform:rotate(90deg)}50%{transform:rotate(180deg)}75%{transform:rotate(270deg)}to{transform:rotate(359deg)}}@keyframes q-mat-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}.q-splitter__panel{position:relative;z-index:0}.q-splitter__panel>.q-splitter{height:100%;width:100%}.q-splitter__separator{background-color:#0000001f;position:relative;-webkit-user-select:none;user-select:none;z-index:1}.q-splitter__separator-area>*{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.q-splitter--dark .q-splitter__separator{background-color:#ffffff47}.q-splitter--vertical>.q-splitter__panel{height:100%}.q-splitter--vertical.q-splitter--active{cursor:col-resize}.q-splitter--vertical>.q-splitter__separator{width:1px}.q-splitter--vertical>.q-splitter__separator>div{left:-6px;right:-6px}.q-splitter--vertical.q-splitter--workable>.q-splitter__separator{cursor:col-resize}.q-splitter--horizontal>.q-splitter__panel{width:100%}.q-splitter--horizontal.q-splitter--active{cursor:row-resize}.q-splitter--horizontal>.q-splitter__separator{height:1px}.q-splitter--horizontal>.q-splitter__separator>div{bottom:-6px;top:-6px}.q-splitter--horizontal.q-splitter--workable>.q-splitter__separator{cursor:row-resize}.q-splitter__after,.q-splitter__before{overflow:auto}.q-stepper{background:#fff;border-radius:4px;box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f}.q-stepper__title{font-size:14px;letter-spacing:.1px;line-height:18px}.q-stepper__caption{font-size:12px;line-height:14px}.q-stepper__dot{background:currentColor;border-radius:50%;contain:layout;font-size:14px;height:24px;margin-right:8px;min-width:24px;width:24px}.q-stepper__dot span{color:#fff}.q-stepper__tab{color:#9e9e9e;flex-direction:row;font-size:14px;padding:8px 24px}.q-stepper--dark{box-shadow:0 1px 5px #fff3,0 2px 2px #ffffff24,0 3px 1px -2px #ffffff1f}.q-stepper--dark .q-stepper__dot span{color:#000}.q-stepper__tab--navigation{cursor:pointer;-webkit-user-select:none;user-select:none}.q-stepper__tab--active,.q-stepper__tab--done{color:var(--q-primary)}.q-stepper__tab--active .q-stepper__dot,.q-stepper__tab--active .q-stepper__label,.q-stepper__tab--done .q-stepper__dot,.q-stepper__tab--done .q-stepper__label{text-shadow:0 0 0 currentColor}.q-stepper__tab--disabled .q-stepper__dot{background:#00000038}.q-stepper__tab--disabled .q-stepper__label{color:#00000052}.q-stepper__tab--error{color:var(--q-negative)}.q-stepper__tab--error-with-icon .q-stepper__dot{background:#0000!important}.q-stepper__tab--error-with-icon .q-stepper__dot span{color:currentColor;font-size:24px}.q-stepper__header{border-top-left-radius:inherit;border-top-right-radius:inherit}.q-stepper__header--border{border-bottom:1px solid #0000001f}.q-stepper__header--standard-labels .q-stepper__tab{justify-content:center;min-height:72px}.q-stepper__header--standard-labels .q-stepper__tab:first-child{justify-content:flex-start}.q-stepper__header--standard-labels .q-stepper__tab:last-child{justify-content:flex-end}.q-stepper__header--standard-labels .q-stepper__tab:only-child{justify-content:center}.q-stepper__header--standard-labels .q-stepper__dot:after{display:none}.q-stepper__header--alternative-labels .q-stepper__tab{flex-direction:column;justify-content:flex-start;min-height:104px;padding:24px 32px}.q-stepper__header--alternative-labels .q-stepper__dot{margin-right:0}.q-stepper__header--alternative-labels .q-stepper__label{margin-top:8px;text-align:center}.q-stepper__header--alternative-labels .q-stepper__label:after,.q-stepper__header--alternative-labels .q-stepper__label:before{display:none}.q-stepper__header--contracted,.q-stepper__header--contracted.q-stepper__header--alternative-labels .q-stepper__tab{min-height:72px}.q-stepper__header--contracted.q-stepper__header--alternative-labels .q-stepper__tab:first-child{align-items:flex-start}.q-stepper__header--contracted.q-stepper__header--alternative-labels .q-stepper__tab:last-child{align-items:flex-end}.q-stepper__header--contracted .q-stepper__tab{padding:24px 0}.q-stepper__header--contracted .q-stepper__tab:first-child .q-stepper__dot{transform:translateX(24px)}.q-stepper__header--contracted .q-stepper__tab:last-child .q-stepper__dot{transform:translateX(-24px)}.q-stepper__header--contracted .q-stepper__tab:not(:last-child) .q-stepper__dot:after{display:block!important}.q-stepper__header--contracted .q-stepper__dot{margin:0}.q-stepper__header--contracted .q-stepper__label{display:none}.q-stepper__nav{padding-top:24px}.q-stepper--flat{box-shadow:none}.q-stepper--bordered{border:1px solid #0000001f}.q-stepper--horizontal .q-stepper__step-inner{padding:24px}.q-stepper--horizontal .q-stepper__tab:first-child{border-top-left-radius:inherit}.q-stepper--horizontal .q-stepper__tab:last-child{border-top-right-radius:inherit}.q-stepper--horizontal .q-stepper__tab:first-child .q-stepper__dot:before,.q-stepper--horizontal .q-stepper__tab:last-child .q-stepper__dot:after,.q-stepper--horizontal .q-stepper__tab:last-child .q-stepper__label:after{display:none}.q-stepper--horizontal .q-stepper__tab{overflow:hidden}.q-stepper--horizontal .q-stepper__line{contain:layout}.q-stepper--horizontal .q-stepper__line:after,.q-stepper--horizontal .q-stepper__line:before{background:#0000001f;height:1px;position:absolute;top:50%;width:100vw}.q-stepper--horizontal .q-stepper__dot:after,.q-stepper--horizontal .q-stepper__label:after{content:"";left:100%;margin-left:8px}.q-stepper--horizontal .q-stepper__dot:before{content:"";margin-right:8px;right:100%}.q-stepper--horizontal>.q-stepper__nav{padding:0 24px 24px}.q-stepper--vertical{padding:16px 0}.q-stepper--vertical .q-stepper__tab{padding:12px 24px}.q-stepper--vertical .q-stepper__title{line-height:18px}.q-stepper--vertical .q-stepper__step-inner{padding:0 24px 32px 60px}.q-stepper--vertical>.q-stepper__nav{padding:24px 24px 0}.q-stepper--vertical .q-stepper__step{overflow:hidden}.q-stepper--vertical .q-stepper__dot{margin-right:12px}.q-stepper--vertical .q-stepper__dot:after,.q-stepper--vertical .q-stepper__dot:before{background:#0000001f;content:"";height:99999px;left:50%;position:absolute;width:1px}.q-stepper--vertical .q-stepper__dot:before{bottom:100%;margin-bottom:8px}.q-stepper--vertical .q-stepper__dot:after{margin-top:8px;top:100%}.q-stepper--vertical .q-stepper__step:first-child .q-stepper__dot:before,.q-stepper--vertical .q-stepper__step:last-child .q-stepper__dot:after{display:none}.q-stepper--vertical .q-stepper__step:last-child .q-stepper__step-inner{padding-bottom:8px}.q-stepper--dark .q-stepper__header--border,.q-stepper--dark.q-stepper--bordered{border-color:#ffffff47}.q-stepper--dark.q-stepper--horizontal .q-stepper__line:after,.q-stepper--dark.q-stepper--horizontal .q-stepper__line:before,.q-stepper--dark.q-stepper--vertical .q-stepper__dot:after,.q-stepper--dark.q-stepper--vertical .q-stepper__dot:before{background:#ffffff47}.q-stepper--dark .q-stepper__tab--disabled{color:#ffffff47}.q-stepper--dark .q-stepper__tab--disabled .q-stepper__dot{background:#ffffff47}.q-stepper--dark .q-stepper__tab--disabled .q-stepper__label{color:#ffffff8a}.q-tab-panels{background:#fff}.q-tab-panel{padding:16px}.q-markup-table{background:#fff;overflow:auto}.q-table{border-collapse:initial;border-spacing:0;max-width:100%;width:100%}.q-table tbody td,.q-table thead tr{height:48px}.q-table th{font-size:12px;font-weight:500;-webkit-user-select:none;user-select:none}.q-table th.sortable{cursor:pointer}.q-table th.sortable:hover .q-table__sort-icon{opacity:.64}.q-table th.sorted .q-table__sort-icon{opacity:.86!important}.q-table th.sort-desc .q-table__sort-icon{transform:rotate(180deg)}.q-table td,.q-table th{background-color:inherit;padding:7px 16px}.q-table td,.q-table th,.q-table thead{border-style:solid;border-width:0}.q-table tbody td{font-size:13px}.q-table__card{background-color:#fff;border-radius:4px;box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f;color:#000}.q-table__card .q-table__middle{flex:1 1 auto}.q-table__card .q-table__bottom,.q-table__card .q-table__top{flex:0 0 auto}.q-table__container{position:relative}.q-table__container>div:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.q-table__container>div:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.q-table__container>.q-inner-loading{border-radius:inherit!important}.q-table__top{padding:12px 16px}.q-table__top .q-table__control{flex-wrap:wrap}.q-table__title{font-size:20px;font-weight:400;letter-spacing:.005em}.q-table__separator{min-width:8px!important}.q-table__progress{height:0!important}.q-table__progress th{border:0!important;padding:0!important}.q-table__progress .q-linear-progress{bottom:0;position:absolute}.q-table__middle{max-width:100%}.q-table__bottom{font-size:12px;min-height:50px;padding:4px 14px 4px 16px}.q-table__bottom .q-table__control{min-height:24px}.q-table__bottom-nodata-icon{font-size:200%;margin-right:8px}.q-table__bottom-item{margin-right:16px}.q-table__control{align-items:center;display:flex}.q-table__sort-icon{font-size:120%;opacity:0;transition:transform .3s cubic-bezier(.25,.8,.5,1)}.q-table__sort-icon--center,.q-table__sort-icon--left{margin-left:4px}.q-table__sort-icon--right{margin-right:4px}.q-table--col-auto-width{width:1px}.q-table--dark,.q-table__card--dark{box-shadow:0 1px 5px #fff3,0 2px 2px #ffffff24,0 3px 1px -2px #ffffff1f}.q-table--flat{box-shadow:none}.q-table--bordered{border:1px solid #0000001f}.q-table--square{border-radius:0}.q-table__linear-progress{height:2px}.q-table--no-wrap td,.q-table--no-wrap th{white-space:nowrap}.q-table--grid{border-radius:4px;box-shadow:none}.q-table--grid .q-table__top{padding-bottom:4px}.q-table--grid .q-table__middle{margin-bottom:4px;min-height:2px}.q-table--grid .q-table__middle thead,.q-table--grid .q-table__middle thead th{border:0!important}.q-table--grid .q-table__linear-progress{bottom:0}.q-table--grid .q-table__bottom{border-top:0}.q-table--grid .q-table__grid-content{flex:1 1 auto}.q-table--grid.fullscreen{background:inherit}.q-table__grid-item-card{padding:12px;vertical-align:top}.q-table__grid-item-card .q-separator{margin:12px 0}.q-table__grid-item-row+.q-table__grid-item-row{margin-top:8px}.q-table__grid-item-title{font-size:12px;font-weight:500;opacity:.54}.q-table__grid-item-value{font-size:13px}.q-table__grid-item{padding:4px;transition:transform .3s cubic-bezier(.25,.8,.5,1)}.q-table__grid-item--selected{transform:scale(.95)}.q-table--cell-separator tbody tr:not(:last-child)>td,.q-table--cell-separator thead th,.q-table--horizontal-separator tbody tr:not(:last-child)>td,.q-table--horizontal-separator thead th{border-bottom-width:1px}.q-table--cell-separator td,.q-table--cell-separator th,.q-table--vertical-separator td,.q-table--vertical-separator th{border-left-width:1px}.q-table--cell-separator thead tr:last-child th,.q-table--cell-separator.q-table--loading tr:nth-last-child(2) th,.q-table--vertical-separator thead tr:last-child th,.q-table--vertical-separator.q-table--loading tr:nth-last-child(2) th{border-bottom-width:1px}.q-table--cell-separator td:first-child,.q-table--cell-separator th:first-child,.q-table--vertical-separator td:first-child,.q-table--vertical-separator th:first-child{border-left:0}.q-table--cell-separator .q-table__top,.q-table--vertical-separator .q-table__top{border-bottom:1px solid #0000001f}.q-table--dense .q-table__top{padding:6px 16px}.q-table--dense .q-table__bottom{min-height:33px}.q-table--dense .q-table__sort-icon{font-size:110%}.q-table--dense .q-table td,.q-table--dense .q-table th{padding:4px 8px}.q-table--dense .q-table tbody td,.q-table--dense .q-table tbody tr,.q-table--dense .q-table thead tr{height:28px}.q-table--dense .q-table td:first-child,.q-table--dense .q-table th:first-child{padding-left:16px}.q-table--dense .q-table td:last-child,.q-table--dense .q-table th:last-child{padding-right:16px}.q-table--dense .q-table__bottom-item{margin-right:8px}.q-table--dense .q-table__select .q-field__control,.q-table--dense .q-table__select .q-field__native{min-height:24px;padding:0}.q-table--dense .q-table__select .q-field__marginal{height:24px}.q-table__bottom{border-top:1px solid #0000001f}.q-table td,.q-table th,.q-table thead,.q-table tr{border-color:#0000001f}.q-table tbody td{position:relative}.q-table tbody td:after,.q-table tbody td:before{bottom:0;left:0;pointer-events:none;position:absolute;right:0;top:0}.q-table tbody td:before{background:#00000008}.q-table tbody td:after{background:#0000000f}.q-table tbody tr.selected td:after,body.desktop .q-table>tbody>tr:not(.q-tr--no-hover):hover>td:not(.q-td--no-hover):before{content:""}.q-table--dark,.q-table--dark .q-table__bottom,.q-table--dark td,.q-table--dark th,.q-table--dark thead,.q-table--dark tr,.q-table__card--dark{border-color:#ffffff47}.q-table--dark tbody td:before{background:#ffffff12}.q-table--dark tbody td:after{background:#ffffff1a}.q-table--dark.q-table--cell-separator .q-table__top,.q-table--dark.q-table--vertical-separator .q-table__top{border-color:#ffffff47}.q-tab{color:inherit;min-height:48px;padding:0 16px;text-decoration:none;text-transform:uppercase;transition:color .3s,background-color .3s;white-space:nowrap}.q-tab--full{min-height:72px}.q-tab--no-caps{text-transform:none}.q-tab__content{height:inherit;min-width:40px;padding:4px 0}.q-tab__content--inline .q-tab__icon+.q-tab__label{padding-left:8px}.q-tab__content .q-chip--floating{right:-16px;top:0}.q-tab__icon{font-size:24px;height:24px;width:24px}.q-tab__label{font-size:14px;font-weight:500;line-height:1.715em}.q-tab .q-badge{right:-12px;top:3px}.q-tab__alert,.q-tab__alert-icon{position:absolute}.q-tab__alert{background:currentColor;border-radius:50%;height:10px;right:-9px;top:7px;width:10px}.q-tab__alert-icon{font-size:18px;right:-12px;top:2px}.q-tab__indicator{background:currentColor;height:2px;opacity:0}.q-tab--active .q-tab__indicator{opacity:1;transform-origin:left}.q-tab--inactive{opacity:.85}.q-tabs{position:relative;transition:color .3s,background-color .3s}.q-tabs--scrollable.q-tabs__arrows--outside.q-tabs--horizontal{padding-left:36px;padding-right:36px}.q-tabs--scrollable.q-tabs__arrows--outside.q-tabs--vertical{padding-bottom:36px;padding-top:36px}.q-tabs--scrollable.q-tabs__arrows--outside .q-tabs__arrow--faded{opacity:.3;pointer-events:none}.q-tabs--scrollable.q-tabs__arrows--inside .q-tabs__arrow--faded{display:none}.q-tabs--not-scrollable.q-tabs__arrows--outside,body.mobile .q-tabs--scrollable.q-tabs--mobile-without-arrows.q-tabs__arrows--outside{padding-left:0;padding-right:0}.q-tabs--not-scrollable .q-tabs__arrow,body.mobile .q-tabs--scrollable.q-tabs--mobile-without-arrows .q-tabs__arrow{display:none}.q-tabs--not-scrollable .q-tabs__content,body.mobile .q-tabs--scrollable.q-tabs--mobile-without-arrows .q-tabs__content{border-radius:inherit}.q-tabs__arrow{cursor:pointer;font-size:32px;min-width:36px;text-shadow:0 0 3px #fff,0 0 1px #fff,0 0 1px #000;transition:opacity .3s}.q-tabs__content{flex:1 1 auto;overflow:hidden}.q-tabs__content--align-center{justify-content:center}.q-tabs__content--align-right{justify-content:flex-end}.q-tabs__content--align-justify .q-tab{flex:1 1 auto}.q-tabs__offset{display:none}.q-tabs--horizontal .q-tabs__arrow{height:100%}.q-tabs--horizontal .q-tabs__arrow--left{bottom:0;left:0;top:0}.q-tabs--horizontal .q-tabs__arrow--right{bottom:0;right:0;top:0}.q-tabs--vertical,.q-tabs--vertical .q-tabs__content{display:block!important;height:100%}.q-tabs--vertical .q-tabs__arrow{height:36px;text-align:center;width:100%}.q-tabs--vertical .q-tabs__arrow--left{left:0;right:0;top:0}.q-tabs--vertical .q-tabs__arrow--right{bottom:0;left:0;right:0}.q-tabs--vertical .q-tab{padding:0 8px}.q-tabs--vertical .q-tab__indicator{height:unset;width:2px}.q-tabs--vertical.q-tabs--not-scrollable .q-tabs__content{height:100%}.q-tabs--vertical.q-tabs--dense .q-tab__content{min-width:24px}.q-tabs--dense .q-tab{min-height:36px}.q-tabs--dense .q-tab--full{min-height:52px}.q-time{background:#fff;border-radius:4px;box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f;max-width:100%;min-width:290px;outline:0;width:290px}.q-time--bordered{border:1px solid #0000001f}.q-time__header{background-color:var(--q-primary);border-top-left-radius:inherit;color:#fff;font-weight:300;padding:16px}.q-time__actions{padding:0 16px 16px}.q-time__header-label{font-size:28px;letter-spacing:-.00833em;line-height:1}.q-time__header-label>div+div{margin-left:4px}.q-time__link{opacity:.56;outline:0;transition:opacity .3s ease-out}.q-time__link--active,.q-time__link:focus,.q-time__link:hover{opacity:1}.q-time__header-ampm{font-size:16px;letter-spacing:.1em}.q-time__content{padding:16px}.q-time__content:before{content:"";display:block;padding-bottom:100%}.q-time__container-parent{padding:16px}.q-time__container-child{background:#0000001f;border-radius:50%}.q-time__clock{font-size:14px;height:100%;max-height:100%;max-width:100%;padding:24px;width:100%}.q-time__clock-circle{position:relative}.q-time__clock-center{background:currentColor;border-radius:50%;height:6px;margin:auto;min-height:0;width:6px}.q-time__clock-pointer{background:currentColor;bottom:0;color:var(--q-primary);height:50%;left:50%;min-height:0;position:absolute;right:0;transform:translateX(-50%);transform-origin:0 0;width:2px}.q-time__clock-pointer:after,.q-time__clock-pointer:before{background:currentColor;border-radius:50%;content:"";left:50%;position:absolute;transform:translateX(-50%)}.q-time__clock-pointer:before{bottom:-4px;height:8px;width:8px}.q-time__clock-pointer:after{height:6px;top:-3px;width:6px}.q-time__clock-position{border-radius:50%;font-size:12px;height:32px;line-height:32px;margin:0;min-height:32px;padding:0;position:absolute;transform:translate(-50%,-50%);width:32px}.q-time__clock-position--disable{opacity:.4}.q-time__clock-position--active{background-color:var(--q-primary);color:#fff}.q-time__clock-pos-0{left:50%;top:0}.q-time__clock-pos-1{left:75%;top:6.7%}.q-time__clock-pos-2{left:93.3%;top:25%}.q-time__clock-pos-3{left:100%;top:50%}.q-time__clock-pos-4{left:93.3%;top:75%}.q-time__clock-pos-5{left:75%;top:93.3%}.q-time__clock-pos-6{left:50%;top:100%}.q-time__clock-pos-7{left:25%;top:93.3%}.q-time__clock-pos-8{left:6.7%;top:75%}.q-time__clock-pos-9{left:0;top:50%}.q-time__clock-pos-10{left:6.7%;top:25%}.q-time__clock-pos-11{left:25%;top:6.7%}.q-time__clock-pos-12{left:50%;top:15%}.q-time__clock-pos-13{left:67.5%;top:19.69%}.q-time__clock-pos-14{left:80.31%;top:32.5%}.q-time__clock-pos-15{left:85%;top:50%}.q-time__clock-pos-16{left:80.31%;top:67.5%}.q-time__clock-pos-17{left:67.5%;top:80.31%}.q-time__clock-pos-18{left:50%;top:85%}.q-time__clock-pos-19{left:32.5%;top:80.31%}.q-time__clock-pos-20{left:19.69%;top:67.5%}.q-time__clock-pos-21{left:15%;top:50%}.q-time__clock-pos-22{left:19.69%;top:32.5%}.q-time__clock-pos-23{left:32.5%;top:19.69%}.q-time__now-button{background-color:var(--q-primary);color:#fff;right:12px;top:12px}.q-time--readonly .q-time__content,.q-time--readonly .q-time__header-ampm,.q-time.disabled .q-time__content,.q-time.disabled .q-time__header-ampm{pointer-events:none}.q-time--portrait{display:inline-flex;flex-direction:column}.q-time--portrait .q-time__header{border-top-right-radius:inherit;min-height:86px}.q-time--portrait .q-time__header-ampm{margin-left:12px}.q-time--portrait.q-time--bordered .q-time__content{margin:1px 0}.q-time--landscape{align-items:stretch;display:inline-flex;min-width:420px}.q-time--landscape>div{display:flex;flex-direction:column;justify-content:center}.q-time--landscape .q-time__header{border-bottom-left-radius:inherit;min-width:156px}.q-time--landscape .q-time__header-ampm{margin-top:12px}.q-time--dark{border-color:#ffffff47;box-shadow:0 1px 5px #fff3,0 2px 2px #ffffff24,0 3px 1px -2px #ffffff1f}.q-timeline{list-style:none;padding:0;width:100%}.q-timeline h6{line-height:inherit}.q-timeline--dark{color:#fff}.q-timeline--dark .q-timeline__subtitle{opacity:.7}.q-timeline__content{padding-bottom:24px}.q-timeline__title{margin-bottom:16px;margin-top:0}.q-timeline__subtitle{font-size:12px;font-weight:700;letter-spacing:1px;margin-bottom:8px;opacity:.6;text-transform:uppercase}.q-timeline__dot{bottom:0;position:absolute;top:0;width:15px}.q-timeline__dot:after,.q-timeline__dot:before{background:currentColor;content:"";display:block;position:absolute}.q-timeline__dot:before{border:3px solid #0000;border-radius:100%;height:15px;left:0;top:4px;transition:background .3s ease-in-out,border .3s ease-in-out;width:15px}.q-timeline__dot:after{bottom:0;left:6px;opacity:.4;top:24px;width:3px}.q-timeline__dot .q-icon{color:#fff;font-size:16px;height:38px;left:0;line-height:38px;position:absolute;right:0;top:0;width:100%}.q-timeline__dot .q-icon>img,.q-timeline__dot .q-icon>svg{height:1em;width:1em}.q-timeline__dot-img{background:currentColor;border-radius:50%;height:31px;left:0;position:absolute;right:0;top:4px;width:31px}.q-timeline__heading{position:relative}.q-timeline__heading:first-child .q-timeline__heading-title{padding-top:0}.q-timeline__heading:last-child .q-timeline__heading-title{padding-bottom:0}.q-timeline__heading-title{margin:0;padding:32px 0}.q-timeline__entry{line-height:22px;position:relative}.q-timeline__entry:last-child{padding-bottom:0!important}.q-timeline__entry:last-child .q-timeline__dot:after{content:none}.q-timeline__entry--icon .q-timeline__dot{width:31px}.q-timeline__entry--icon .q-timeline__dot:before{height:31px;width:31px}.q-timeline__entry--icon .q-timeline__dot:after{left:14px;top:41px}.q-timeline__entry--icon .q-timeline__subtitle{padding-top:8px}.q-timeline--dense--right .q-timeline__entry{padding-left:40px}.q-timeline--dense--right .q-timeline__entry--icon .q-timeline__dot{left:-8px}.q-timeline--dense--right .q-timeline__dot{left:0}.q-timeline--dense--left .q-timeline__heading{text-align:right}.q-timeline--dense--left .q-timeline__entry{padding-right:40px}.q-timeline--dense--left .q-timeline__entry--icon .q-timeline__dot{right:-8px}.q-timeline--dense--left .q-timeline__content,.q-timeline--dense--left .q-timeline__subtitle,.q-timeline--dense--left .q-timeline__title{text-align:right}.q-timeline--dense--left .q-timeline__dot{right:0}.q-timeline--comfortable{display:table}.q-timeline--comfortable .q-timeline__heading{display:table-row;font-size:200%}.q-timeline--comfortable .q-timeline__heading>div{display:table-cell}.q-timeline--comfortable .q-timeline__entry{display:table-row;padding:0}.q-timeline--comfortable .q-timeline__entry--icon .q-timeline__content{padding-top:8px}.q-timeline--comfortable .q-timeline__content,.q-timeline--comfortable .q-timeline__dot,.q-timeline--comfortable .q-timeline__subtitle{display:table-cell;vertical-align:top}.q-timeline--comfortable .q-timeline__subtitle{width:35%}.q-timeline--comfortable .q-timeline__dot{min-width:31px;position:relative}.q-timeline--comfortable--right .q-timeline__heading .q-timeline__heading-title{margin-left:-50px}.q-timeline--comfortable--right .q-timeline__subtitle{padding-right:30px;text-align:right}.q-timeline--comfortable--right .q-timeline__content{padding-left:30px}.q-timeline--comfortable--right .q-timeline__entry--icon .q-timeline__dot{left:-8px}.q-timeline--comfortable--left .q-timeline__heading{text-align:right}.q-timeline--comfortable--left .q-timeline__heading .q-timeline__heading-title{margin-right:-50px}.q-timeline--comfortable--left .q-timeline__subtitle{padding-left:30px}.q-timeline--comfortable--left .q-timeline__content{padding-right:30px}.q-timeline--comfortable--left .q-timeline__content,.q-timeline--comfortable--left .q-timeline__title{text-align:right}.q-timeline--comfortable--left .q-timeline__entry--icon .q-timeline__dot{right:0}.q-timeline--comfortable--left .q-timeline__dot{right:-8px}.q-timeline--loose .q-timeline__heading-title{margin-left:0;text-align:center}.q-timeline--loose .q-timeline__content,.q-timeline--loose .q-timeline__dot,.q-timeline--loose .q-timeline__entry,.q-timeline--loose .q-timeline__subtitle{display:block;margin:0;padding:0}.q-timeline--loose .q-timeline__dot{left:50%;margin-left:-7.15px;position:absolute}.q-timeline--loose .q-timeline__entry{overflow:hidden;padding-bottom:24px}.q-timeline--loose .q-timeline__entry--icon .q-timeline__dot{margin-left:-15px}.q-timeline--loose .q-timeline__entry--icon .q-timeline__subtitle{line-height:38px}.q-timeline--loose .q-timeline__entry--icon .q-timeline__content{padding-top:8px}.q-timeline--loose .q-timeline__entry--left .q-timeline__content,.q-timeline--loose .q-timeline__entry--right .q-timeline__subtitle{float:left;padding-right:30px;text-align:right}.q-timeline--loose .q-timeline__entry--left .q-timeline__subtitle,.q-timeline--loose .q-timeline__entry--right .q-timeline__content{float:right;padding-left:30px;text-align:left}.q-timeline--loose .q-timeline__content,.q-timeline--loose .q-timeline__subtitle{width:50%}.q-toggle{vertical-align:middle}.q-toggle__native{height:1px;width:1px}.q-toggle__track{background:currentColor;border-radius:.175em;height:.35em;opacity:.38}.q-toggle__thumb{height:.5em;left:.25em;top:.25em;transition:left .22s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;user-select:none;width:.5em;z-index:0}.q-toggle__thumb:after{background:#fff;border-radius:50%;bottom:0;box-shadow:0 3px 1px -2px #0003,0 2px 2px 0 #00000024,0 1px 5px 0 #0000001f;content:"";left:0;position:absolute;right:0;top:0}.q-toggle__thumb .q-icon{color:#000;font-size:.3em;min-width:1em;opacity:.54;z-index:1}.q-toggle__inner{font-size:40px;height:1em;min-width:1.4em;padding:.325em .3em;-webkit-print-color-adjust:exact;width:1.4em}.q-toggle__inner--indet .q-toggle__thumb{left:.45em}.q-toggle__inner--truthy{color:var(--q-primary)}.q-toggle__inner--truthy .q-toggle__track{opacity:.54}.q-toggle__inner--truthy .q-toggle__thumb{left:.65em}.q-toggle__inner--truthy .q-toggle__thumb:after{background-color:currentColor}.q-toggle__inner--truthy .q-toggle__thumb .q-icon{color:#fff;opacity:1}.q-toggle.disabled{opacity:.75!important}.q-toggle--dark .q-toggle__inner{color:#fff}.q-toggle--dark .q-toggle__inner--truthy{color:var(--q-primary)}.q-toggle--dark .q-toggle__thumb:after{box-shadow:none}.q-toggle--dark .q-toggle__thumb:before{opacity:.32!important}.q-toggle--dense .q-toggle__inner{height:.5em;min-width:.8em;padding:.07625em 0;width:.8em}.q-toggle--dense .q-toggle__thumb{left:0;top:0}.q-toggle--dense .q-toggle__inner--indet .q-toggle__thumb{left:.15em}.q-toggle--dense .q-toggle__inner--truthy .q-toggle__thumb{left:.3em}.q-toggle--dense .q-toggle__label{padding-left:.5em}.q-toggle--dense.reverse .q-toggle__label{padding-left:0;padding-right:.5em}body.desktop .q-toggle:not(.disabled) .q-toggle__thumb:before{background:currentColor;border-radius:50%;bottom:0;content:"";left:0;opacity:.12;position:absolute;right:0;top:0;transform:scale3d(0,0,1);transition:transform .22s cubic-bezier(0,0,.2,1)}body.desktop .q-toggle:not(.disabled):focus .q-toggle__thumb:before,body.desktop .q-toggle:not(.disabled):hover .q-toggle__thumb:before{transform:scale3d(2,2,1)}body.desktop .q-toggle--dense:not(.disabled):focus .q-toggle__thumb:before,body.desktop .q-toggle--dense:not(.disabled):hover .q-toggle__thumb:before{transform:scale3d(1.5,1.5,1)}.q-toolbar{min-height:50px;padding:0 12px;position:relative;width:100%}.q-toolbar--inset{padding-left:58px}.q-toolbar .q-avatar{font-size:38px}.q-toolbar__title{flex:1 1 0%;font-size:21px;font-weight:400;letter-spacing:.01em;max-width:100%;min-width:1px;padding:0 12px}.q-toolbar__title:first-child{padding-left:0}.q-toolbar__title:last-child{padding-right:0}.q-tooltip--style{background:#757575;border-radius:4px;color:#fafafa;font-size:10px;font-weight:400;text-transform:none}.q-tooltip{overflow-x:hidden;overflow-y:auto;padding:6px 10px;position:fixed!important;z-index:9000}@media (max-width:599.98px){.q-tooltip{font-size:14px;padding:8px 16px}}.q-tree{color:#9e9e9e;position:relative}.q-tree__node{padding:0 0 3px 22px}.q-tree__node:after{border-left:1px solid;bottom:0;content:"";left:-13px;position:absolute;right:auto;top:-3px;width:2px}.q-tree__node:last-child:after{display:none}.q-tree__node--disabled{pointer-events:none}.q-tree__node--disabled .disabled{opacity:1!important}.q-tree__node--disabled>.disabled,.q-tree__node--disabled>div,.q-tree__node--disabled>i{opacity:.6!important}.q-tree__node--disabled>.disabled .q-tree__node--disabled>.disabled,.q-tree__node--disabled>.disabled .q-tree__node--disabled>div,.q-tree__node--disabled>.disabled .q-tree__node--disabled>i,.q-tree__node--disabled>div .q-tree__node--disabled>.disabled,.q-tree__node--disabled>div .q-tree__node--disabled>div,.q-tree__node--disabled>div .q-tree__node--disabled>i,.q-tree__node--disabled>i .q-tree__node--disabled>.disabled,.q-tree__node--disabled>i .q-tree__node--disabled>div,.q-tree__node--disabled>i .q-tree__node--disabled>i{opacity:1!important}.q-tree__node-header:before{border-bottom:1px solid;border-left:1px solid;bottom:50%;content:"";left:-35px;position:absolute;top:-3px;width:31px}.q-tree__children{padding-left:25px}.q-tree__node-body{padding:5px 0 8px 5px}.q-tree__node--parent{padding-left:2px}.q-tree__node--parent>.q-tree__node-header:before{left:-15px;width:15px}.q-tree__node--parent>.q-tree__node-collapsible>.q-tree__node-body{padding:5px 0 8px 27px}.q-tree__node--parent>.q-tree__node-collapsible>.q-tree__node-body:after{border-left:1px solid;bottom:50px;content:"";height:100%;left:12px;position:absolute;right:auto;top:0;width:2px}.q-tree__node--link{cursor:pointer}.q-tree__node-header{border-radius:4px;margin-top:3px;outline:0;padding:4px}.q-tree__node-header-content{color:#000;transition:color .3s}.q-tree__node--selected .q-tree__node-header-content{color:#9e9e9e}.q-tree__icon,.q-tree__node-header-content .q-icon{font-size:21px}.q-tree__img{border-radius:2px;height:42px}.q-tree__avatar,.q-tree__node-header-content .q-avatar{border-radius:50%;font-size:28px;height:28px;width:28px}.q-tree__arrow,.q-tree__spinner{font-size:16px;margin-right:4px}.q-tree__arrow{transition:transform .3s}.q-tree__arrow--rotate{transform:rotate(90deg)}.q-tree__tickbox{margin-right:4px}.q-tree>.q-tree__node{padding:0}.q-tree>.q-tree__node:after,.q-tree>.q-tree__node>.q-tree__node-header:before{display:none}.q-tree>.q-tree__node--child>.q-tree__node-header{padding-left:24px}.q-tree--dark .q-tree__node-header-content{color:#fff}.q-tree--no-connectors .q-tree__node-body:after,.q-tree--no-connectors .q-tree__node-header:before,.q-tree--no-connectors .q-tree__node:after{display:none!important}.q-tree--dense>.q-tree__node--child>.q-tree__node-header{padding-left:1px}.q-tree--dense .q-tree__arrow,.q-tree--dense .q-tree__spinner{margin-right:1px}.q-tree--dense .q-tree__img{height:32px}.q-tree--dense .q-tree__tickbox{margin-right:3px}.q-tree--dense .q-tree__node{padding:0}.q-tree--dense .q-tree__node:after{left:-8px;top:0}.q-tree--dense .q-tree__node-header{margin-top:0;padding:1px}.q-tree--dense .q-tree__node-header:before{left:-8px;top:0;width:8px}.q-tree--dense .q-tree__node--child{padding-left:17px}.q-tree--dense .q-tree__node--child>.q-tree__node-header:before{left:-25px;width:21px}.q-tree--dense .q-tree__node-body{padding:0 0 2px}.q-tree--dense .q-tree__node--parent>.q-tree__node-collapsible>.q-tree__node-body{padding:0 0 2px 20px}.q-tree--dense .q-tree__node--parent>.q-tree__node-collapsible>.q-tree__node-body:after{left:8px}.q-tree--dense .q-tree__children{padding-left:16px}[dir=rtl] .q-tree__arrow{transform:rotate(180deg)}[dir=rtl] .q-tree__arrow--rotate{transform:rotate(90deg)}.q-uploader{background:#fff;border-radius:4px;box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f;max-height:320px;position:relative;vertical-align:top;width:320px}.q-uploader--bordered{border:1px solid #0000001f}.q-uploader__input{cursor:pointer!important;height:100%;opacity:0;width:100%;z-index:1}.q-uploader__input::-webkit-file-upload-button{cursor:pointer}.q-uploader__file:before{background:currentColor;bottom:0;content:"";left:0;opacity:.04;pointer-events:none;position:absolute;right:0;top:0}.q-uploader__file:before,.q-uploader__header{border-top-left-radius:inherit;border-top-right-radius:inherit}.q-uploader__header{background-color:var(--q-primary);color:#fff;position:relative;width:100%}.q-uploader__spinner{font-size:24px;margin-right:4px}.q-uploader__header-content{padding:8px}.q-uploader__dnd{background:#fff9;outline:1px dashed currentColor;outline-offset:-4px}.q-uploader__overlay{background-color:#fff9;color:#000;font-size:36px}.q-uploader__list{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;flex:1 1 auto;min-height:60px;padding:8px;position:relative}.q-uploader__file{border:1px solid #0000001f;border-radius:4px 4px 0 0}.q-uploader__file .q-circular-progress{font-size:24px}.q-uploader__file--img{background-position:50% 50%;background-repeat:no-repeat;background-size:cover;color:#fff;height:200px;min-width:200px}.q-uploader__file--img:before{content:none}.q-uploader__file--img .q-circular-progress{color:#fff}.q-uploader__file--img .q-uploader__file-header{background:linear-gradient(180deg,#000000b3 20%,#fff0);padding-bottom:24px}.q-uploader__file+.q-uploader__file{margin-top:8px}.q-uploader__file-header{border-top-left-radius:inherit;border-top-right-radius:inherit;padding:4px 8px;position:relative}.q-uploader__file-header-content{padding-right:8px}.q-uploader__file-status{font-size:24px;margin-right:4px}.q-uploader__title{font-size:14px;font-weight:700;line-height:18px;word-break:break-word}.q-uploader__subtitle{font-size:12px;line-height:18px}.q-uploader--disable .q-uploader__header,.q-uploader--disable .q-uploader__list{pointer-events:none}.q-uploader--dark{box-shadow:0 1px 5px #fff3,0 2px 2px #ffffff24,0 3px 1px -2px #ffffff1f}.q-uploader--dark,.q-uploader--dark .q-uploader__file{border-color:#ffffff47}.q-uploader--dark .q-uploader__dnd,.q-uploader--dark .q-uploader__overlay{background:#ffffff4d}.q-uploader--dark .q-uploader__overlay{color:#fff}.q-video{border-radius:inherit;overflow:hidden;position:relative}.q-video embed,.q-video iframe,.q-video object{height:100%;width:100%}.q-video--responsive{height:0}.q-video--responsive embed,.q-video--responsive iframe,.q-video--responsive object{left:0;position:absolute;top:0}.q-virtual-scroll:focus{outline:0}.q-virtual-scroll__content{contain:content;outline:none}.q-virtual-scroll__content>*{overflow-anchor:none}.q-virtual-scroll__content>[data-q-vs-anchor]{overflow-anchor:auto}.q-virtual-scroll__padding{background:linear-gradient(#fff0,#fff0 20%,#80808008 0,#80808014 50%,#80808008 80%,#fff0 0,#fff0);background-size:var(--q-virtual-scroll-item-width,100%) var(--q-virtual-scroll-item-height,50px)}.q-table .q-virtual-scroll__padding tr{height:0!important}.q-table .q-virtual-scroll__padding td{padding:0!important}.q-virtual-scroll--horizontal{align-items:stretch}.q-virtual-scroll--horizontal,.q-virtual-scroll--horizontal .q-virtual-scroll__content{display:flex;flex-direction:row;flex-wrap:nowrap}.q-virtual-scroll--horizontal .q-virtual-scroll__content,.q-virtual-scroll--horizontal .q-virtual-scroll__content>*,.q-virtual-scroll--horizontal .q-virtual-scroll__padding{flex:0 0 auto}.q-virtual-scroll--horizontal .q-virtual-scroll__padding{background:linear-gradient(270deg,#fff0,#fff0 20%,#80808008 0,#80808014 50%,#80808008 80%,#fff0 0,#fff0);background-size:var(--q-virtual-scroll-item-width,50px) var(--q-virtual-scroll-item-height,100%)}.q-ripple{border-radius:inherit;contain:strict;height:100%;overflow:hidden;width:100%;z-index:0}.q-ripple,.q-ripple__inner{color:inherit;left:0;pointer-events:none;position:absolute;top:0}.q-ripple__inner{background:currentColor;border-radius:50%;opacity:0;will-change:transform,opacity}.q-ripple__inner--enter{transition:transform .225s cubic-bezier(.4,0,.2,1),opacity .1s cubic-bezier(.4,0,.2,1)}.q-ripple__inner--leave{transition:opacity .25s cubic-bezier(.4,0,.2,1)}.q-morph--internal,.q-morph--invisible{bottom:200vh!important;opacity:0!important;pointer-events:none!important;position:fixed!important;right:200vw!important}.q-loading{color:#000;position:fixed!important}.q-loading__backdrop{background-color:#000;bottom:0;left:0;opacity:.5;position:fixed;right:0;top:0;transition:background-color .28s;z-index:-1}.q-loading__box{border-radius:4px;color:#fff;max-width:450px;padding:18px}.q-loading__message{margin:40px 20px 0;text-align:center}.q-notifications__list{left:0;margin-bottom:10px;pointer-events:none;position:relative;right:0;z-index:9500}.q-notifications__list--center{bottom:0;top:0}.q-notifications__list--top{top:0}.q-notifications__list--bottom{bottom:0}body.q-ios-padding .q-notifications__list--center,body.q-ios-padding .q-notifications__list--top{top:20px;top:env(safe-area-inset-top)}body.q-ios-padding .q-notifications__list--bottom,body.q-ios-padding .q-notifications__list--center{bottom:env(safe-area-inset-bottom)}.q-notification{background:#323232;border-radius:4px;box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f;color:#fff;display:inline-flex;flex-shrink:0;font-size:14px;margin:10px 10px 0;max-width:95vw;pointer-events:all;transition:transform 1s,opacity 1s;z-index:9500}.q-notification__icon{flex:0 0 1em;font-size:24px}.q-notification__icon--additional{margin-right:16px}.q-notification__avatar{font-size:32px}.q-notification__avatar--additional{margin-right:8px}.q-notification__spinner{font-size:32px}.q-notification__spinner--additional{margin-right:8px}.q-notification__message{padding:8px 0}.q-notification__caption{font-size:.9em;opacity:.7}.q-notification__actions{color:var(--q-primary)}.q-notification__badge{animation:q-notif-badge .42s;background-color:var(--q-negative);border-radius:4px;box-shadow:0 1px 3px #0003,0 1px 1px #00000024,0 2px 1px -1px #0000001f;color:#fff;font-size:12px;line-height:12px;padding:4px 8px;position:absolute}.q-notification__badge--top-left,.q-notification__badge--top-right{top:-6px}.q-notification__badge--bottom-left,.q-notification__badge--bottom-right{bottom:-6px}.q-notification__badge--bottom-left,.q-notification__badge--top-left{left:-22px}.q-notification__badge--bottom-right,.q-notification__badge--top-right{right:-22px}.q-notification__progress{animation:q-notif-progress linear;background:currentColor;border-radius:4px 4px 0 0;bottom:0;height:3px;left:-10px;opacity:.3;position:absolute;right:-10px;transform:scaleX(0);transform-origin:0 50%;z-index:-1}.q-notification--standard{min-height:48px;padding:0 16px}.q-notification--standard .q-notification__actions{margin-right:-8px;padding:6px 0 6px 8px}.q-notification--multi-line{min-height:68px;padding:8px 16px}.q-notification--multi-line .q-notification__badge--top-left,.q-notification--multi-line .q-notification__badge--top-right{top:-15px}.q-notification--multi-line .q-notification__badge--bottom-left,.q-notification--multi-line .q-notification__badge--bottom-right{bottom:-15px}.q-notification--multi-line .q-notification__progress{bottom:-8px}.q-notification--multi-line .q-notification__actions{padding:0}.q-notification--multi-line .q-notification__actions--with-media{padding-left:25px}.q-notification--top-enter-from,.q-notification--top-leave-to,.q-notification--top-left-enter-from,.q-notification--top-left-leave-to,.q-notification--top-right-enter-from,.q-notification--top-right-leave-to{opacity:0;transform:translateY(-50px);z-index:9499}.q-notification--center-enter-from,.q-notification--center-leave-to,.q-notification--left-enter-from,.q-notification--left-leave-to,.q-notification--right-enter-from,.q-notification--right-leave-to{opacity:0;transform:rotateX(90deg);z-index:9499}.q-notification--bottom-enter-from,.q-notification--bottom-leave-to,.q-notification--bottom-left-enter-from,.q-notification--bottom-left-leave-to,.q-notification--bottom-right-enter-from,.q-notification--bottom-right-leave-to{opacity:0;transform:translateY(50px);z-index:9499}.q-notification--bottom-leave-active,.q-notification--bottom-left-leave-active,.q-notification--bottom-right-leave-active,.q-notification--center-leave-active,.q-notification--left-leave-active,.q-notification--right-leave-active,.q-notification--top-leave-active,.q-notification--top-left-leave-active,.q-notification--top-right-leave-active{margin-left:0;margin-right:0;position:absolute;z-index:9499}.q-notification--center-leave-active,.q-notification--top-leave-active{top:0}.q-notification--bottom-leave-active,.q-notification--bottom-left-leave-active,.q-notification--bottom-right-leave-active{bottom:0}@media (min-width:600px){.q-notification{max-width:65vw}}@keyframes q-notif-badge{15%{transform:translate3d(-25%,0,0) rotate(-5deg)}30%{transform:translate3d(20%,0,0) rotate(3deg)}45%{transform:translate3d(-15%,0,0) rotate(-3deg)}60%{transform:translate3d(10%,0,0) rotate(2deg)}75%{transform:translate3d(-5%,0,0) rotate(-1deg)}}@keyframes q-notif-progress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}:root{--animate-duration:0.3s;--animate-delay:0.3s;--animate-repeat:1}.animated{animation-duration:var(--animate-duration);animation-fill-mode:both}.animated.infinite{animation-iteration-count:infinite}.animated.hinge{animation-duration:2s}.animated.repeat-1{animation-iteration-count:var(--animate-repeat)}.animated.repeat-2{animation-iteration-count:calc(var(--animate-repeat)*2)}.animated.repeat-3{animation-iteration-count:calc(var(--animate-repeat)*3)}.animated.delay-1s{animation-delay:var(--animate-delay)}.animated.delay-2s{animation-delay:calc(var(--animate-delay)*2)}.animated.delay-3s{animation-delay:calc(var(--animate-delay)*3)}.animated.delay-4s{animation-delay:calc(var(--animate-delay)*4)}.animated.delay-5s{animation-delay:calc(var(--animate-delay)*5)}.animated.faster{animation-duration:calc(var(--animate-duration)/2)}.animated.fast{animation-duration:calc(var(--animate-duration)*.8)}.animated.slow{animation-duration:calc(var(--animate-duration)*2)}.animated.slower{animation-duration:calc(var(--animate-duration)*3)}@media (prefers-reduced-motion:reduce),print{.animated{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}.animated[class*=Out]{opacity:0}}.q-animate--scale{animation:q-scale .15s;animation-timing-function:cubic-bezier(.25,.8,.25,1)}@keyframes q-scale{0%{transform:scale(1)}50%{transform:scale(1.04)}to{transform:scale(1)}}.q-animate--fade{animation:q-fade .2s}@keyframes q-fade{0%{opacity:0}to{opacity:1}}:root{--q-primary:#1976d2;--q-secondary:#26a69a;--q-accent:#9c27b0;--q-positive:#21ba45;--q-negative:#c10015;--q-info:#31ccec;--q-warning:#f2c037;--q-dark:#1d1d1d;--q-dark-page:#121212}.text-dark{color:var(--q-dark)!important}.bg-dark{background:var(--q-dark)!important}.text-primary{color:var(--q-primary)!important}.bg-primary{background:var(--q-primary)!important}.text-secondary{color:var(--q-secondary)!important}.bg-secondary{background:var(--q-secondary)!important}.text-accent{color:var(--q-accent)!important}.bg-accent{background:var(--q-accent)!important}.text-positive{color:var(--q-positive)!important}.bg-positive{background:var(--q-positive)!important}.text-negative{color:var(--q-negative)!important}.bg-negative{background:var(--q-negative)!important}.text-info{color:var(--q-info)!important}.bg-info{background:var(--q-info)!important}.text-warning{color:var(--q-warning)!important}.bg-warning{background:var(--q-warning)!important}.text-white{color:#fff!important}.bg-white{background:#fff!important}.text-black{color:#000!important}.bg-black{background:#000!important}.text-transparent{color:#0000!important}.bg-transparent{background:#0000!important}.text-separator{color:#0000001f!important}.bg-separator{background:#0000001f!important}.text-dark-separator{color:#ffffff47!important}.bg-dark-separator{background:#ffffff47!important}.text-red{color:#f44336!important}.text-red-1{color:#ffebee!important}.text-red-2{color:#ffcdd2!important}.text-red-3{color:#ef9a9a!important}.text-red-4{color:#e57373!important}.text-red-5{color:#ef5350!important}.text-red-6{color:#f44336!important}.text-red-7{color:#e53935!important}.text-red-8{color:#d32f2f!important}.text-red-9{color:#c62828!important}.text-red-10{color:#b71c1c!important}.text-red-11{color:#ff8a80!important}.text-red-12{color:#ff5252!important}.text-red-13{color:#ff1744!important}.text-red-14{color:#d50000!important}.text-pink{color:#e91e63!important}.text-pink-1{color:#fce4ec!important}.text-pink-2{color:#f8bbd0!important}.text-pink-3{color:#f48fb1!important}.text-pink-4{color:#f06292!important}.text-pink-5{color:#ec407a!important}.text-pink-6{color:#e91e63!important}.text-pink-7{color:#d81b60!important}.text-pink-8{color:#c2185b!important}.text-pink-9{color:#ad1457!important}.text-pink-10{color:#880e4f!important}.text-pink-11{color:#ff80ab!important}.text-pink-12{color:#ff4081!important}.text-pink-13{color:#f50057!important}.text-pink-14{color:#c51162!important}.text-purple{color:#9c27b0!important}.text-purple-1{color:#f3e5f5!important}.text-purple-2{color:#e1bee7!important}.text-purple-3{color:#ce93d8!important}.text-purple-4{color:#ba68c8!important}.text-purple-5{color:#ab47bc!important}.text-purple-6{color:#9c27b0!important}.text-purple-7{color:#8e24aa!important}.text-purple-8{color:#7b1fa2!important}.text-purple-9{color:#6a1b9a!important}.text-purple-10{color:#4a148c!important}.text-purple-11{color:#ea80fc!important}.text-purple-12{color:#e040fb!important}.text-purple-13{color:#d500f9!important}.text-purple-14{color:#a0f!important}.text-deep-purple{color:#673ab7!important}.text-deep-purple-1{color:#ede7f6!important}.text-deep-purple-2{color:#d1c4e9!important}.text-deep-purple-3{color:#b39ddb!important}.text-deep-purple-4{color:#9575cd!important}.text-deep-purple-5{color:#7e57c2!important}.text-deep-purple-6{color:#673ab7!important}.text-deep-purple-7{color:#5e35b1!important}.text-deep-purple-8{color:#512da8!important}.text-deep-purple-9{color:#4527a0!important}.text-deep-purple-10{color:#311b92!important}.text-deep-purple-11{color:#b388ff!important}.text-deep-purple-12{color:#7c4dff!important}.text-deep-purple-13{color:#651fff!important}.text-deep-purple-14{color:#6200ea!important}.text-indigo{color:#3f51b5!important}.text-indigo-1{color:#e8eaf6!important}.text-indigo-2{color:#c5cae9!important}.text-indigo-3{color:#9fa8da!important}.text-indigo-4{color:#7986cb!important}.text-indigo-5{color:#5c6bc0!important}.text-indigo-6{color:#3f51b5!important}.text-indigo-7{color:#3949ab!important}.text-indigo-8{color:#303f9f!important}.text-indigo-9{color:#283593!important}.text-indigo-10{color:#1a237e!important}.text-indigo-11{color:#8c9eff!important}.text-indigo-12{color:#536dfe!important}.text-indigo-13{color:#3d5afe!important}.text-indigo-14{color:#304ffe!important}.text-blue{color:#2196f3!important}.text-blue-1{color:#e3f2fd!important}.text-blue-2{color:#bbdefb!important}.text-blue-3{color:#90caf9!important}.text-blue-4{color:#64b5f6!important}.text-blue-5{color:#42a5f5!important}.text-blue-6{color:#2196f3!important}.text-blue-7{color:#1e88e5!important}.text-blue-8{color:#1976d2!important}.text-blue-9{color:#1565c0!important}.text-blue-10{color:#0d47a1!important}.text-blue-11{color:#82b1ff!important}.text-blue-12{color:#448aff!important}.text-blue-13{color:#2979ff!important}.text-blue-14{color:#2962ff!important}.text-light-blue{color:#03a9f4!important}.text-light-blue-1{color:#e1f5fe!important}.text-light-blue-2{color:#b3e5fc!important}.text-light-blue-3{color:#81d4fa!important}.text-light-blue-4{color:#4fc3f7!important}.text-light-blue-5{color:#29b6f6!important}.text-light-blue-6{color:#03a9f4!important}.text-light-blue-7{color:#039be5!important}.text-light-blue-8{color:#0288d1!important}.text-light-blue-9{color:#0277bd!important}.text-light-blue-10{color:#01579b!important}.text-light-blue-11{color:#80d8ff!important}.text-light-blue-12{color:#40c4ff!important}.text-light-blue-13{color:#00b0ff!important}.text-light-blue-14{color:#0091ea!important}.text-cyan{color:#00bcd4!important}.text-cyan-1{color:#e0f7fa!important}.text-cyan-2{color:#b2ebf2!important}.text-cyan-3{color:#80deea!important}.text-cyan-4{color:#4dd0e1!important}.text-cyan-5{color:#26c6da!important}.text-cyan-6{color:#00bcd4!important}.text-cyan-7{color:#00acc1!important}.text-cyan-8{color:#0097a7!important}.text-cyan-9{color:#00838f!important}.text-cyan-10{color:#006064!important}.text-cyan-11{color:#84ffff!important}.text-cyan-12{color:#18ffff!important}.text-cyan-13{color:#00e5ff!important}.text-cyan-14{color:#00b8d4!important}.text-teal{color:#009688!important}.text-teal-1{color:#e0f2f1!important}.text-teal-2{color:#b2dfdb!important}.text-teal-3{color:#80cbc4!important}.text-teal-4{color:#4db6ac!important}.text-teal-5{color:#26a69a!important}.text-teal-6{color:#009688!important}.text-teal-7{color:#00897b!important}.text-teal-8{color:#00796b!important}.text-teal-9{color:#00695c!important}.text-teal-10{color:#004d40!important}.text-teal-11{color:#a7ffeb!important}.text-teal-12{color:#64ffda!important}.text-teal-13{color:#1de9b6!important}.text-teal-14{color:#00bfa5!important}.text-green{color:#4caf50!important}.text-green-1{color:#e8f5e9!important}.text-green-2{color:#c8e6c9!important}.text-green-3{color:#a5d6a7!important}.text-green-4{color:#81c784!important}.text-green-5{color:#66bb6a!important}.text-green-6{color:#4caf50!important}.text-green-7{color:#43a047!important}.text-green-8{color:#388e3c!important}.text-green-9{color:#2e7d32!important}.text-green-10{color:#1b5e20!important}.text-green-11{color:#b9f6ca!important}.text-green-12{color:#69f0ae!important}.text-green-13{color:#00e676!important}.text-green-14{color:#00c853!important}.text-light-green{color:#8bc34a!important}.text-light-green-1{color:#f1f8e9!important}.text-light-green-2{color:#dcedc8!important}.text-light-green-3{color:#c5e1a5!important}.text-light-green-4{color:#aed581!important}.text-light-green-5{color:#9ccc65!important}.text-light-green-6{color:#8bc34a!important}.text-light-green-7{color:#7cb342!important}.text-light-green-8{color:#689f38!important}.text-light-green-9{color:#558b2f!important}.text-light-green-10{color:#33691e!important}.text-light-green-11{color:#ccff90!important}.text-light-green-12{color:#b2ff59!important}.text-light-green-13{color:#76ff03!important}.text-light-green-14{color:#64dd17!important}.text-lime{color:#cddc39!important}.text-lime-1{color:#f9fbe7!important}.text-lime-2{color:#f0f4c3!important}.text-lime-3{color:#e6ee9c!important}.text-lime-4{color:#dce775!important}.text-lime-5{color:#d4e157!important}.text-lime-6{color:#cddc39!important}.text-lime-7{color:#c0ca33!important}.text-lime-8{color:#afb42b!important}.text-lime-9{color:#9e9d24!important}.text-lime-10{color:#827717!important}.text-lime-11{color:#f4ff81!important}.text-lime-12{color:#eeff41!important}.text-lime-13{color:#c6ff00!important}.text-lime-14{color:#aeea00!important}.text-yellow{color:#ffeb3b!important}.text-yellow-1{color:#fffde7!important}.text-yellow-2{color:#fff9c4!important}.text-yellow-3{color:#fff59d!important}.text-yellow-4{color:#fff176!important}.text-yellow-5{color:#ffee58!important}.text-yellow-6{color:#ffeb3b!important}.text-yellow-7{color:#fdd835!important}.text-yellow-8{color:#fbc02d!important}.text-yellow-9{color:#f9a825!important}.text-yellow-10{color:#f57f17!important}.text-yellow-11{color:#ffff8d!important}.text-yellow-12{color:#ff0!important}.text-yellow-13{color:#ffea00!important}.text-yellow-14{color:#ffd600!important}.text-amber{color:#ffc107!important}.text-amber-1{color:#fff8e1!important}.text-amber-2{color:#ffecb3!important}.text-amber-3{color:#ffe082!important}.text-amber-4{color:#ffd54f!important}.text-amber-5{color:#ffca28!important}.text-amber-6{color:#ffc107!important}.text-amber-7{color:#ffb300!important}.text-amber-8{color:#ffa000!important}.text-amber-9{color:#ff8f00!important}.text-amber-10{color:#ff6f00!important}.text-amber-11{color:#ffe57f!important}.text-amber-12{color:#ffd740!important}.text-amber-13{color:#ffc400!important}.text-amber-14{color:#ffab00!important}.text-orange{color:#ff9800!important}.text-orange-1{color:#fff3e0!important}.text-orange-2{color:#ffe0b2!important}.text-orange-3{color:#ffcc80!important}.text-orange-4{color:#ffb74d!important}.text-orange-5{color:#ffa726!important}.text-orange-6{color:#ff9800!important}.text-orange-7{color:#fb8c00!important}.text-orange-8{color:#f57c00!important}.text-orange-9{color:#ef6c00!important}.text-orange-10{color:#e65100!important}.text-orange-11{color:#ffd180!important}.text-orange-12{color:#ffab40!important}.text-orange-13{color:#ff9100!important}.text-orange-14{color:#ff6d00!important}.text-deep-orange{color:#ff5722!important}.text-deep-orange-1{color:#fbe9e7!important}.text-deep-orange-2{color:#ffccbc!important}.text-deep-orange-3{color:#ffab91!important}.text-deep-orange-4{color:#ff8a65!important}.text-deep-orange-5{color:#ff7043!important}.text-deep-orange-6{color:#ff5722!important}.text-deep-orange-7{color:#f4511e!important}.text-deep-orange-8{color:#e64a19!important}.text-deep-orange-9{color:#d84315!important}.text-deep-orange-10{color:#bf360c!important}.text-deep-orange-11{color:#ff9e80!important}.text-deep-orange-12{color:#ff6e40!important}.text-deep-orange-13{color:#ff3d00!important}.text-deep-orange-14{color:#dd2c00!important}.text-brown{color:#795548!important}.text-brown-1{color:#efebe9!important}.text-brown-2{color:#d7ccc8!important}.text-brown-3{color:#bcaaa4!important}.text-brown-4{color:#a1887f!important}.text-brown-5{color:#8d6e63!important}.text-brown-6{color:#795548!important}.text-brown-7{color:#6d4c41!important}.text-brown-8{color:#5d4037!important}.text-brown-9{color:#4e342e!important}.text-brown-10{color:#3e2723!important}.text-brown-11{color:#d7ccc8!important}.text-brown-12{color:#bcaaa4!important}.text-brown-13{color:#8d6e63!important}.text-brown-14{color:#5d4037!important}.text-grey{color:#9e9e9e!important}.text-grey-1{color:#fafafa!important}.text-grey-2{color:#f5f5f5!important}.text-grey-3{color:#eee!important}.text-grey-4{color:#e0e0e0!important}.text-grey-5{color:#bdbdbd!important}.text-grey-6{color:#9e9e9e!important}.text-grey-7{color:#757575!important}.text-grey-8{color:#616161!important}.text-grey-9{color:#424242!important}.text-grey-10{color:#212121!important}.text-grey-11{color:#f5f5f5!important}.text-grey-12{color:#eee!important}.text-grey-13{color:#bdbdbd!important}.text-grey-14{color:#616161!important}.text-blue-grey{color:#607d8b!important}.text-blue-grey-1{color:#eceff1!important}.text-blue-grey-2{color:#cfd8dc!important}.text-blue-grey-3{color:#b0bec5!important}.text-blue-grey-4{color:#90a4ae!important}.text-blue-grey-5{color:#78909c!important}.text-blue-grey-6{color:#607d8b!important}.text-blue-grey-7{color:#546e7a!important}.text-blue-grey-8{color:#455a64!important}.text-blue-grey-9{color:#37474f!important}.text-blue-grey-10{color:#263238!important}.text-blue-grey-11{color:#cfd8dc!important}.text-blue-grey-12{color:#b0bec5!important}.text-blue-grey-13{color:#78909c!important}.text-blue-grey-14{color:#455a64!important}.bg-red{background:#f44336!important}.bg-red-1{background:#ffebee!important}.bg-red-2{background:#ffcdd2!important}.bg-red-3{background:#ef9a9a!important}.bg-red-4{background:#e57373!important}.bg-red-5{background:#ef5350!important}.bg-red-6{background:#f44336!important}.bg-red-7{background:#e53935!important}.bg-red-8{background:#d32f2f!important}.bg-red-9{background:#c62828!important}.bg-red-10{background:#b71c1c!important}.bg-red-11{background:#ff8a80!important}.bg-red-12{background:#ff5252!important}.bg-red-13{background:#ff1744!important}.bg-red-14{background:#d50000!important}.bg-pink{background:#e91e63!important}.bg-pink-1{background:#fce4ec!important}.bg-pink-2{background:#f8bbd0!important}.bg-pink-3{background:#f48fb1!important}.bg-pink-4{background:#f06292!important}.bg-pink-5{background:#ec407a!important}.bg-pink-6{background:#e91e63!important}.bg-pink-7{background:#d81b60!important}.bg-pink-8{background:#c2185b!important}.bg-pink-9{background:#ad1457!important}.bg-pink-10{background:#880e4f!important}.bg-pink-11{background:#ff80ab!important}.bg-pink-12{background:#ff4081!important}.bg-pink-13{background:#f50057!important}.bg-pink-14{background:#c51162!important}.bg-purple{background:#9c27b0!important}.bg-purple-1{background:#f3e5f5!important}.bg-purple-2{background:#e1bee7!important}.bg-purple-3{background:#ce93d8!important}.bg-purple-4{background:#ba68c8!important}.bg-purple-5{background:#ab47bc!important}.bg-purple-6{background:#9c27b0!important}.bg-purple-7{background:#8e24aa!important}.bg-purple-8{background:#7b1fa2!important}.bg-purple-9{background:#6a1b9a!important}.bg-purple-10{background:#4a148c!important}.bg-purple-11{background:#ea80fc!important}.bg-purple-12{background:#e040fb!important}.bg-purple-13{background:#d500f9!important}.bg-purple-14{background:#a0f!important}.bg-deep-purple{background:#673ab7!important}.bg-deep-purple-1{background:#ede7f6!important}.bg-deep-purple-2{background:#d1c4e9!important}.bg-deep-purple-3{background:#b39ddb!important}.bg-deep-purple-4{background:#9575cd!important}.bg-deep-purple-5{background:#7e57c2!important}.bg-deep-purple-6{background:#673ab7!important}.bg-deep-purple-7{background:#5e35b1!important}.bg-deep-purple-8{background:#512da8!important}.bg-deep-purple-9{background:#4527a0!important}.bg-deep-purple-10{background:#311b92!important}.bg-deep-purple-11{background:#b388ff!important}.bg-deep-purple-12{background:#7c4dff!important}.bg-deep-purple-13{background:#651fff!important}.bg-deep-purple-14{background:#6200ea!important}.bg-indigo{background:#3f51b5!important}.bg-indigo-1{background:#e8eaf6!important}.bg-indigo-2{background:#c5cae9!important}.bg-indigo-3{background:#9fa8da!important}.bg-indigo-4{background:#7986cb!important}.bg-indigo-5{background:#5c6bc0!important}.bg-indigo-6{background:#3f51b5!important}.bg-indigo-7{background:#3949ab!important}.bg-indigo-8{background:#303f9f!important}.bg-indigo-9{background:#283593!important}.bg-indigo-10{background:#1a237e!important}.bg-indigo-11{background:#8c9eff!important}.bg-indigo-12{background:#536dfe!important}.bg-indigo-13{background:#3d5afe!important}.bg-indigo-14{background:#304ffe!important}.bg-blue{background:#2196f3!important}.bg-blue-1{background:#e3f2fd!important}.bg-blue-2{background:#bbdefb!important}.bg-blue-3{background:#90caf9!important}.bg-blue-4{background:#64b5f6!important}.bg-blue-5{background:#42a5f5!important}.bg-blue-6{background:#2196f3!important}.bg-blue-7{background:#1e88e5!important}.bg-blue-8{background:#1976d2!important}.bg-blue-9{background:#1565c0!important}.bg-blue-10{background:#0d47a1!important}.bg-blue-11{background:#82b1ff!important}.bg-blue-12{background:#448aff!important}.bg-blue-13{background:#2979ff!important}.bg-blue-14{background:#2962ff!important}.bg-light-blue{background:#03a9f4!important}.bg-light-blue-1{background:#e1f5fe!important}.bg-light-blue-2{background:#b3e5fc!important}.bg-light-blue-3{background:#81d4fa!important}.bg-light-blue-4{background:#4fc3f7!important}.bg-light-blue-5{background:#29b6f6!important}.bg-light-blue-6{background:#03a9f4!important}.bg-light-blue-7{background:#039be5!important}.bg-light-blue-8{background:#0288d1!important}.bg-light-blue-9{background:#0277bd!important}.bg-light-blue-10{background:#01579b!important}.bg-light-blue-11{background:#80d8ff!important}.bg-light-blue-12{background:#40c4ff!important}.bg-light-blue-13{background:#00b0ff!important}.bg-light-blue-14{background:#0091ea!important}.bg-cyan{background:#00bcd4!important}.bg-cyan-1{background:#e0f7fa!important}.bg-cyan-2{background:#b2ebf2!important}.bg-cyan-3{background:#80deea!important}.bg-cyan-4{background:#4dd0e1!important}.bg-cyan-5{background:#26c6da!important}.bg-cyan-6{background:#00bcd4!important}.bg-cyan-7{background:#00acc1!important}.bg-cyan-8{background:#0097a7!important}.bg-cyan-9{background:#00838f!important}.bg-cyan-10{background:#006064!important}.bg-cyan-11{background:#84ffff!important}.bg-cyan-12{background:#18ffff!important}.bg-cyan-13{background:#00e5ff!important}.bg-cyan-14{background:#00b8d4!important}.bg-teal{background:#009688!important}.bg-teal-1{background:#e0f2f1!important}.bg-teal-2{background:#b2dfdb!important}.bg-teal-3{background:#80cbc4!important}.bg-teal-4{background:#4db6ac!important}.bg-teal-5{background:#26a69a!important}.bg-teal-6{background:#009688!important}.bg-teal-7{background:#00897b!important}.bg-teal-8{background:#00796b!important}.bg-teal-9{background:#00695c!important}.bg-teal-10{background:#004d40!important}.bg-teal-11{background:#a7ffeb!important}.bg-teal-12{background:#64ffda!important}.bg-teal-13{background:#1de9b6!important}.bg-teal-14{background:#00bfa5!important}.bg-green{background:#4caf50!important}.bg-green-1{background:#e8f5e9!important}.bg-green-2{background:#c8e6c9!important}.bg-green-3{background:#a5d6a7!important}.bg-green-4{background:#81c784!important}.bg-green-5{background:#66bb6a!important}.bg-green-6{background:#4caf50!important}.bg-green-7{background:#43a047!important}.bg-green-8{background:#388e3c!important}.bg-green-9{background:#2e7d32!important}.bg-green-10{background:#1b5e20!important}.bg-green-11{background:#b9f6ca!important}.bg-green-12{background:#69f0ae!important}.bg-green-13{background:#00e676!important}.bg-green-14{background:#00c853!important}.bg-light-green{background:#8bc34a!important}.bg-light-green-1{background:#f1f8e9!important}.bg-light-green-2{background:#dcedc8!important}.bg-light-green-3{background:#c5e1a5!important}.bg-light-green-4{background:#aed581!important}.bg-light-green-5{background:#9ccc65!important}.bg-light-green-6{background:#8bc34a!important}.bg-light-green-7{background:#7cb342!important}.bg-light-green-8{background:#689f38!important}.bg-light-green-9{background:#558b2f!important}.bg-light-green-10{background:#33691e!important}.bg-light-green-11{background:#ccff90!important}.bg-light-green-12{background:#b2ff59!important}.bg-light-green-13{background:#76ff03!important}.bg-light-green-14{background:#64dd17!important}.bg-lime{background:#cddc39!important}.bg-lime-1{background:#f9fbe7!important}.bg-lime-2{background:#f0f4c3!important}.bg-lime-3{background:#e6ee9c!important}.bg-lime-4{background:#dce775!important}.bg-lime-5{background:#d4e157!important}.bg-lime-6{background:#cddc39!important}.bg-lime-7{background:#c0ca33!important}.bg-lime-8{background:#afb42b!important}.bg-lime-9{background:#9e9d24!important}.bg-lime-10{background:#827717!important}.bg-lime-11{background:#f4ff81!important}.bg-lime-12{background:#eeff41!important}.bg-lime-13{background:#c6ff00!important}.bg-lime-14{background:#aeea00!important}.bg-yellow{background:#ffeb3b!important}.bg-yellow-1{background:#fffde7!important}.bg-yellow-2{background:#fff9c4!important}.bg-yellow-3{background:#fff59d!important}.bg-yellow-4{background:#fff176!important}.bg-yellow-5{background:#ffee58!important}.bg-yellow-6{background:#ffeb3b!important}.bg-yellow-7{background:#fdd835!important}.bg-yellow-8{background:#fbc02d!important}.bg-yellow-9{background:#f9a825!important}.bg-yellow-10{background:#f57f17!important}.bg-yellow-11{background:#ffff8d!important}.bg-yellow-12{background:#ff0!important}.bg-yellow-13{background:#ffea00!important}.bg-yellow-14{background:#ffd600!important}.bg-amber{background:#ffc107!important}.bg-amber-1{background:#fff8e1!important}.bg-amber-2{background:#ffecb3!important}.bg-amber-3{background:#ffe082!important}.bg-amber-4{background:#ffd54f!important}.bg-amber-5{background:#ffca28!important}.bg-amber-6{background:#ffc107!important}.bg-amber-7{background:#ffb300!important}.bg-amber-8{background:#ffa000!important}.bg-amber-9{background:#ff8f00!important}.bg-amber-10{background:#ff6f00!important}.bg-amber-11{background:#ffe57f!important}.bg-amber-12{background:#ffd740!important}.bg-amber-13{background:#ffc400!important}.bg-amber-14{background:#ffab00!important}.bg-orange{background:#ff9800!important}.bg-orange-1{background:#fff3e0!important}.bg-orange-2{background:#ffe0b2!important}.bg-orange-3{background:#ffcc80!important}.bg-orange-4{background:#ffb74d!important}.bg-orange-5{background:#ffa726!important}.bg-orange-6{background:#ff9800!important}.bg-orange-7{background:#fb8c00!important}.bg-orange-8{background:#f57c00!important}.bg-orange-9{background:#ef6c00!important}.bg-orange-10{background:#e65100!important}.bg-orange-11{background:#ffd180!important}.bg-orange-12{background:#ffab40!important}.bg-orange-13{background:#ff9100!important}.bg-orange-14{background:#ff6d00!important}.bg-deep-orange{background:#ff5722!important}.bg-deep-orange-1{background:#fbe9e7!important}.bg-deep-orange-2{background:#ffccbc!important}.bg-deep-orange-3{background:#ffab91!important}.bg-deep-orange-4{background:#ff8a65!important}.bg-deep-orange-5{background:#ff7043!important}.bg-deep-orange-6{background:#ff5722!important}.bg-deep-orange-7{background:#f4511e!important}.bg-deep-orange-8{background:#e64a19!important}.bg-deep-orange-9{background:#d84315!important}.bg-deep-orange-10{background:#bf360c!important}.bg-deep-orange-11{background:#ff9e80!important}.bg-deep-orange-12{background:#ff6e40!important}.bg-deep-orange-13{background:#ff3d00!important}.bg-deep-orange-14{background:#dd2c00!important}.bg-brown{background:#795548!important}.bg-brown-1{background:#efebe9!important}.bg-brown-2{background:#d7ccc8!important}.bg-brown-3{background:#bcaaa4!important}.bg-brown-4{background:#a1887f!important}.bg-brown-5{background:#8d6e63!important}.bg-brown-6{background:#795548!important}.bg-brown-7{background:#6d4c41!important}.bg-brown-8{background:#5d4037!important}.bg-brown-9{background:#4e342e!important}.bg-brown-10{background:#3e2723!important}.bg-brown-11{background:#d7ccc8!important}.bg-brown-12{background:#bcaaa4!important}.bg-brown-13{background:#8d6e63!important}.bg-brown-14{background:#5d4037!important}.bg-grey{background:#9e9e9e!important}.bg-grey-1{background:#fafafa!important}.bg-grey-2{background:#f5f5f5!important}.bg-grey-3{background:#eee!important}.bg-grey-4{background:#e0e0e0!important}.bg-grey-5{background:#bdbdbd!important}.bg-grey-6{background:#9e9e9e!important}.bg-grey-7{background:#757575!important}.bg-grey-8{background:#616161!important}.bg-grey-9{background:#424242!important}.bg-grey-10{background:#212121!important}.bg-grey-11{background:#f5f5f5!important}.bg-grey-12{background:#eee!important}.bg-grey-13{background:#bdbdbd!important}.bg-grey-14{background:#616161!important}.bg-blue-grey{background:#607d8b!important}.bg-blue-grey-1{background:#eceff1!important}.bg-blue-grey-2{background:#cfd8dc!important}.bg-blue-grey-3{background:#b0bec5!important}.bg-blue-grey-4{background:#90a4ae!important}.bg-blue-grey-5{background:#78909c!important}.bg-blue-grey-6{background:#607d8b!important}.bg-blue-grey-7{background:#546e7a!important}.bg-blue-grey-8{background:#455a64!important}.bg-blue-grey-9{background:#37474f!important}.bg-blue-grey-10{background:#263238!important}.bg-blue-grey-11{background:#cfd8dc!important}.bg-blue-grey-12{background:#b0bec5!important}.bg-blue-grey-13{background:#78909c!important}.bg-blue-grey-14{background:#455a64!important}.shadow-transition{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)!important}.shadow-1{box-shadow:0 1px 3px #0003,0 1px 1px #00000024,0 2px 1px -1px #0000001f}.shadow-up-1{box-shadow:0 -1px 3px #0003,0 -1px 1px #00000024,0 -2px 1px -1px #0000001f}.shadow-2{box-shadow:0 1px 5px #0003,0 2px 2px #00000024,0 3px 1px -2px #0000001f}.shadow-up-2{box-shadow:0 -1px 5px #0003,0 -2px 2px #00000024,0 -3px 1px -2px #0000001f}.shadow-3{box-shadow:0 1px 8px #0003,0 3px 4px #00000024,0 3px 3px -2px #0000001f}.shadow-up-3{box-shadow:0 -1px 8px #0003,0 -3px 4px #00000024,0 -3px 3px -2px #0000001f}.shadow-4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.shadow-up-4{box-shadow:0 -2px 4px -1px #0003,0 -4px 5px #00000024,0 -1px 10px #0000001f}.shadow-5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.shadow-up-5{box-shadow:0 -3px 5px -1px #0003,0 -5px 8px #00000024,0 -1px 14px #0000001f}.shadow-6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.shadow-up-6{box-shadow:0 -3px 5px -1px #0003,0 -6px 10px #00000024,0 -1px 18px #0000001f}.shadow-7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.shadow-up-7{box-shadow:0 -4px 5px -2px #0003,0 -7px 10px 1px #00000024,0 -2px 16px 1px #0000001f}.shadow-8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.shadow-up-8{box-shadow:0 -5px 5px -3px #0003,0 -8px 10px 1px #00000024,0 -3px 14px 2px #0000001f}.shadow-9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.shadow-up-9{box-shadow:0 -5px 6px -3px #0003,0 -9px 12px 1px #00000024,0 -3px 16px 2px #0000001f}.shadow-10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.shadow-up-10{box-shadow:0 -6px 6px -3px #0003,0 -10px 14px 1px #00000024,0 -4px 18px 3px #0000001f}.shadow-11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.shadow-up-11{box-shadow:0 -6px 7px -4px #0003,0 -11px 15px 1px #00000024,0 -4px 20px 3px #0000001f}.shadow-12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.shadow-up-12{box-shadow:0 -7px 8px -4px #0003,0 -12px 17px 2px #00000024,0 -5px 22px 4px #0000001f}.shadow-13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.shadow-up-13{box-shadow:0 -7px 8px -4px #0003,0 -13px 19px 2px #00000024,0 -5px 24px 4px #0000001f}.shadow-14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.shadow-up-14{box-shadow:0 -7px 9px -4px #0003,0 -14px 21px 2px #00000024,0 -5px 26px 4px #0000001f}.shadow-15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.shadow-up-15{box-shadow:0 -8px 9px -5px #0003,0 -15px 22px 2px #00000024,0 -6px 28px 5px #0000001f}.shadow-16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.shadow-up-16{box-shadow:0 -8px 10px -5px #0003,0 -16px 24px 2px #00000024,0 -6px 30px 5px #0000001f}.shadow-17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.shadow-up-17{box-shadow:0 -8px 11px -5px #0003,0 -17px 26px 2px #00000024,0 -6px 32px 5px #0000001f}.shadow-18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.shadow-up-18{box-shadow:0 -9px 11px -5px #0003,0 -18px 28px 2px #00000024,0 -7px 34px 6px #0000001f}.shadow-19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.shadow-up-19{box-shadow:0 -9px 12px -6px #0003,0 -19px 29px 2px #00000024,0 -7px 36px 6px #0000001f}.shadow-20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.shadow-up-20{box-shadow:0 -10px 13px -6px #0003,0 -20px 31px 3px #00000024,0 -8px 38px 7px #0000001f}.shadow-21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.shadow-up-21{box-shadow:0 -10px 13px -6px #0003,0 -21px 33px 3px #00000024,0 -8px 40px 7px #0000001f}.shadow-22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.shadow-up-22{box-shadow:0 -10px 14px -6px #0003,0 -22px 35px 3px #00000024,0 -8px 42px 7px #0000001f}.shadow-23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.shadow-up-23{box-shadow:0 -11px 14px -7px #0003,0 -23px 36px 3px #00000024,0 -9px 44px 8px #0000001f}.shadow-24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.shadow-up-24{box-shadow:0 -11px 15px -7px #0003,0 -24px 38px 3px #00000024,0 -9px 46px 8px #0000001f}.inset-shadow{box-shadow:inset 0 7px 9px -7px #000000b3}.inset-shadow-down{box-shadow:inset 0 -7px 9px -7px #000000b3}body.body--dark .shadow-1{box-shadow:0 1px 3px #fff3,0 1px 1px #ffffff24,0 2px 1px -1px #ffffff1f}body.body--dark .shadow-up-1{box-shadow:0 -1px 3px #fff3,0 -1px 1px #ffffff24,0 -2px 1px -1px #ffffff1f}body.body--dark .shadow-2{box-shadow:0 1px 5px #fff3,0 2px 2px #ffffff24,0 3px 1px -2px #ffffff1f}body.body--dark .shadow-up-2{box-shadow:0 -1px 5px #fff3,0 -2px 2px #ffffff24,0 -3px 1px -2px #ffffff1f}body.body--dark .shadow-3{box-shadow:0 1px 8px #fff3,0 3px 4px #ffffff24,0 3px 3px -2px #ffffff1f}body.body--dark .shadow-up-3{box-shadow:0 -1px 8px #fff3,0 -3px 4px #ffffff24,0 -3px 3px -2px #ffffff1f}body.body--dark .shadow-4{box-shadow:0 2px 4px -1px #fff3,0 4px 5px #ffffff24,0 1px 10px #ffffff1f}body.body--dark .shadow-up-4{box-shadow:0 -2px 4px -1px #fff3,0 -4px 5px #ffffff24,0 -1px 10px #ffffff1f}body.body--dark .shadow-5{box-shadow:0 3px 5px -1px #fff3,0 5px 8px #ffffff24,0 1px 14px #ffffff1f}body.body--dark .shadow-up-5{box-shadow:0 -3px 5px -1px #fff3,0 -5px 8px #ffffff24,0 -1px 14px #ffffff1f}body.body--dark .shadow-6{box-shadow:0 3px 5px -1px #fff3,0 6px 10px #ffffff24,0 1px 18px #ffffff1f}body.body--dark .shadow-up-6{box-shadow:0 -3px 5px -1px #fff3,0 -6px 10px #ffffff24,0 -1px 18px #ffffff1f}body.body--dark .shadow-7{box-shadow:0 4px 5px -2px #fff3,0 7px 10px 1px #ffffff24,0 2px 16px 1px #ffffff1f}body.body--dark .shadow-up-7{box-shadow:0 -4px 5px -2px #fff3,0 -7px 10px 1px #ffffff24,0 -2px 16px 1px #ffffff1f}body.body--dark .shadow-8{box-shadow:0 5px 5px -3px #fff3,0 8px 10px 1px #ffffff24,0 3px 14px 2px #ffffff1f}body.body--dark .shadow-up-8{box-shadow:0 -5px 5px -3px #fff3,0 -8px 10px 1px #ffffff24,0 -3px 14px 2px #ffffff1f}body.body--dark .shadow-9{box-shadow:0 5px 6px -3px #fff3,0 9px 12px 1px #ffffff24,0 3px 16px 2px #ffffff1f}body.body--dark .shadow-up-9{box-shadow:0 -5px 6px -3px #fff3,0 -9px 12px 1px #ffffff24,0 -3px 16px 2px #ffffff1f}body.body--dark .shadow-10{box-shadow:0 6px 6px -3px #fff3,0 10px 14px 1px #ffffff24,0 4px 18px 3px #ffffff1f}body.body--dark .shadow-up-10{box-shadow:0 -6px 6px -3px #fff3,0 -10px 14px 1px #ffffff24,0 -4px 18px 3px #ffffff1f}body.body--dark .shadow-11{box-shadow:0 6px 7px -4px #fff3,0 11px 15px 1px #ffffff24,0 4px 20px 3px #ffffff1f}body.body--dark .shadow-up-11{box-shadow:0 -6px 7px -4px #fff3,0 -11px 15px 1px #ffffff24,0 -4px 20px 3px #ffffff1f}body.body--dark .shadow-12{box-shadow:0 7px 8px -4px #fff3,0 12px 17px 2px #ffffff24,0 5px 22px 4px #ffffff1f}body.body--dark .shadow-up-12{box-shadow:0 -7px 8px -4px #fff3,0 -12px 17px 2px #ffffff24,0 -5px 22px 4px #ffffff1f}body.body--dark .shadow-13{box-shadow:0 7px 8px -4px #fff3,0 13px 19px 2px #ffffff24,0 5px 24px 4px #ffffff1f}body.body--dark .shadow-up-13{box-shadow:0 -7px 8px -4px #fff3,0 -13px 19px 2px #ffffff24,0 -5px 24px 4px #ffffff1f}body.body--dark .shadow-14{box-shadow:0 7px 9px -4px #fff3,0 14px 21px 2px #ffffff24,0 5px 26px 4px #ffffff1f}body.body--dark .shadow-up-14{box-shadow:0 -7px 9px -4px #fff3,0 -14px 21px 2px #ffffff24,0 -5px 26px 4px #ffffff1f}body.body--dark .shadow-15{box-shadow:0 8px 9px -5px #fff3,0 15px 22px 2px #ffffff24,0 6px 28px 5px #ffffff1f}body.body--dark .shadow-up-15{box-shadow:0 -8px 9px -5px #fff3,0 -15px 22px 2px #ffffff24,0 -6px 28px 5px #ffffff1f}body.body--dark .shadow-16{box-shadow:0 8px 10px -5px #fff3,0 16px 24px 2px #ffffff24,0 6px 30px 5px #ffffff1f}body.body--dark .shadow-up-16{box-shadow:0 -8px 10px -5px #fff3,0 -16px 24px 2px #ffffff24,0 -6px 30px 5px #ffffff1f}body.body--dark .shadow-17{box-shadow:0 8px 11px -5px #fff3,0 17px 26px 2px #ffffff24,0 6px 32px 5px #ffffff1f}body.body--dark .shadow-up-17{box-shadow:0 -8px 11px -5px #fff3,0 -17px 26px 2px #ffffff24,0 -6px 32px 5px #ffffff1f}body.body--dark .shadow-18{box-shadow:0 9px 11px -5px #fff3,0 18px 28px 2px #ffffff24,0 7px 34px 6px #ffffff1f}body.body--dark .shadow-up-18{box-shadow:0 -9px 11px -5px #fff3,0 -18px 28px 2px #ffffff24,0 -7px 34px 6px #ffffff1f}body.body--dark .shadow-19{box-shadow:0 9px 12px -6px #fff3,0 19px 29px 2px #ffffff24,0 7px 36px 6px #ffffff1f}body.body--dark .shadow-up-19{box-shadow:0 -9px 12px -6px #fff3,0 -19px 29px 2px #ffffff24,0 -7px 36px 6px #ffffff1f}body.body--dark .shadow-20{box-shadow:0 10px 13px -6px #fff3,0 20px 31px 3px #ffffff24,0 8px 38px 7px #ffffff1f}body.body--dark .shadow-up-20{box-shadow:0 -10px 13px -6px #fff3,0 -20px 31px 3px #ffffff24,0 -8px 38px 7px #ffffff1f}body.body--dark .shadow-21{box-shadow:0 10px 13px -6px #fff3,0 21px 33px 3px #ffffff24,0 8px 40px 7px #ffffff1f}body.body--dark .shadow-up-21{box-shadow:0 -10px 13px -6px #fff3,0 -21px 33px 3px #ffffff24,0 -8px 40px 7px #ffffff1f}body.body--dark .shadow-22{box-shadow:0 10px 14px -6px #fff3,0 22px 35px 3px #ffffff24,0 8px 42px 7px #ffffff1f}body.body--dark .shadow-up-22{box-shadow:0 -10px 14px -6px #fff3,0 -22px 35px 3px #ffffff24,0 -8px 42px 7px #ffffff1f}body.body--dark .shadow-23{box-shadow:0 11px 14px -7px #fff3,0 23px 36px 3px #ffffff24,0 9px 44px 8px #ffffff1f}body.body--dark .shadow-up-23{box-shadow:0 -11px 14px -7px #fff3,0 -23px 36px 3px #ffffff24,0 -9px 44px 8px #ffffff1f}body.body--dark .shadow-24{box-shadow:0 11px 15px -7px #fff3,0 24px 38px 3px #ffffff24,0 9px 46px 8px #ffffff1f}body.body--dark .shadow-up-24{box-shadow:0 -11px 15px -7px #fff3,0 -24px 38px 3px #ffffff24,0 -9px 46px 8px #ffffff1f}body.body--dark .inset-shadow{box-shadow:inset 0 7px 9px -7px #ffffffb3}body.body--dark .inset-shadow-down{box-shadow:inset 0 -7px 9px -7px #ffffffb3}.no-shadow,.shadow-0{box-shadow:none!important}.z-marginals{z-index:2000}.z-notify{z-index:9500}.z-fullscreen{z-index:6000}.z-inherit{z-index:inherit!important}.column,.flex,.row{display:flex;flex-wrap:wrap}.column.inline,.flex.inline,.row.inline{display:inline-flex}.row.reverse{flex-direction:row-reverse}.column{flex-direction:column}.column.reverse{flex-direction:column-reverse}.wrap{flex-wrap:wrap}.no-wrap{flex-wrap:nowrap}.reverse-wrap{flex-wrap:wrap-reverse}.order-first{order:-10000}.order-last{order:10000}.order-none{order:0}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.flex-center,.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.flex-center,.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.content-center{align-content:center}.content-stretch{align-content:stretch}.content-between{align-content:space-between}.content-around{align-content:space-around}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.self-baseline{align-self:baseline}.self-stretch{align-self:stretch}.q-gutter-none,.q-gutter-none>*,.q-gutter-x-none,.q-gutter-x-none>*{margin-left:0}.q-gutter-none,.q-gutter-none>*,.q-gutter-y-none,.q-gutter-y-none>*{margin-top:0}.q-col-gutter-none,.q-col-gutter-x-none{margin-left:0}.q-col-gutter-none>*,.q-col-gutter-x-none>*{padding-left:0}.q-col-gutter-none,.q-col-gutter-y-none{margin-top:0}.q-col-gutter-none>*,.q-col-gutter-y-none>*{padding-top:0}.q-gutter-x-xs,.q-gutter-xs{margin-left:-4px}.q-gutter-x-xs>*,.q-gutter-xs>*{margin-left:4px}.q-gutter-xs,.q-gutter-y-xs{margin-top:-4px}.q-gutter-xs>*,.q-gutter-y-xs>*{margin-top:4px}.q-col-gutter-x-xs,.q-col-gutter-xs{margin-left:-4px}.q-col-gutter-x-xs>*,.q-col-gutter-xs>*{padding-left:4px}.q-col-gutter-xs,.q-col-gutter-y-xs{margin-top:-4px}.q-col-gutter-xs>*,.q-col-gutter-y-xs>*{padding-top:4px}.q-gutter-sm,.q-gutter-x-sm{margin-left:-8px}.q-gutter-sm>*,.q-gutter-x-sm>*{margin-left:8px}.q-gutter-sm,.q-gutter-y-sm{margin-top:-8px}.q-gutter-sm>*,.q-gutter-y-sm>*{margin-top:8px}.q-col-gutter-sm,.q-col-gutter-x-sm{margin-left:-8px}.q-col-gutter-sm>*,.q-col-gutter-x-sm>*{padding-left:8px}.q-col-gutter-sm,.q-col-gutter-y-sm{margin-top:-8px}.q-col-gutter-sm>*,.q-col-gutter-y-sm>*{padding-top:8px}.q-gutter-md,.q-gutter-x-md{margin-left:-16px}.q-gutter-md>*,.q-gutter-x-md>*{margin-left:16px}.q-gutter-md,.q-gutter-y-md{margin-top:-16px}.q-gutter-md>*,.q-gutter-y-md>*{margin-top:16px}.q-col-gutter-md,.q-col-gutter-x-md{margin-left:-16px}.q-col-gutter-md>*,.q-col-gutter-x-md>*{padding-left:16px}.q-col-gutter-md,.q-col-gutter-y-md{margin-top:-16px}.q-col-gutter-md>*,.q-col-gutter-y-md>*{padding-top:16px}.q-gutter-lg,.q-gutter-x-lg{margin-left:-24px}.q-gutter-lg>*,.q-gutter-x-lg>*{margin-left:24px}.q-gutter-lg,.q-gutter-y-lg{margin-top:-24px}.q-gutter-lg>*,.q-gutter-y-lg>*{margin-top:24px}.q-col-gutter-lg,.q-col-gutter-x-lg{margin-left:-24px}.q-col-gutter-lg>*,.q-col-gutter-x-lg>*{padding-left:24px}.q-col-gutter-lg,.q-col-gutter-y-lg{margin-top:-24px}.q-col-gutter-lg>*,.q-col-gutter-y-lg>*{padding-top:24px}.q-gutter-x-xl,.q-gutter-xl{margin-left:-48px}.q-gutter-x-xl>*,.q-gutter-xl>*{margin-left:48px}.q-gutter-xl,.q-gutter-y-xl{margin-top:-48px}.q-gutter-xl>*,.q-gutter-y-xl>*{margin-top:48px}.q-col-gutter-x-xl,.q-col-gutter-xl{margin-left:-48px}.q-col-gutter-x-xl>*,.q-col-gutter-xl>*{padding-left:48px}.q-col-gutter-xl,.q-col-gutter-y-xl{margin-top:-48px}.q-col-gutter-xl>*,.q-col-gutter-y-xl>*{padding-top:48px}@media (min-width:0){.flex>.col,.flex>.col-0,.flex>.col-1,.flex>.col-10,.flex>.col-11,.flex>.col-12,.flex>.col-2,.flex>.col-3,.flex>.col-4,.flex>.col-5,.flex>.col-6,.flex>.col-7,.flex>.col-8,.flex>.col-9,.flex>.col-auto,.flex>.col-grow,.flex>.col-shrink,.flex>.col-xs,.flex>.col-xs-0,.flex>.col-xs-1,.flex>.col-xs-10,.flex>.col-xs-11,.flex>.col-xs-12,.flex>.col-xs-2,.flex>.col-xs-3,.flex>.col-xs-4,.flex>.col-xs-5,.flex>.col-xs-6,.flex>.col-xs-7,.flex>.col-xs-8,.flex>.col-xs-9,.flex>.col-xs-auto,.flex>.col-xs-grow,.flex>.col-xs-shrink,.row>.col,.row>.col-0,.row>.col-1,.row>.col-10,.row>.col-11,.row>.col-12,.row>.col-2,.row>.col-3,.row>.col-4,.row>.col-5,.row>.col-6,.row>.col-7,.row>.col-8,.row>.col-9,.row>.col-auto,.row>.col-grow,.row>.col-shrink,.row>.col-xs,.row>.col-xs-0,.row>.col-xs-1,.row>.col-xs-10,.row>.col-xs-11,.row>.col-xs-12,.row>.col-xs-2,.row>.col-xs-3,.row>.col-xs-4,.row>.col-xs-5,.row>.col-xs-6,.row>.col-xs-7,.row>.col-xs-8,.row>.col-xs-9,.row>.col-xs-auto,.row>.col-xs-grow,.row>.col-xs-shrink{max-width:100%;min-width:0;width:auto}.column>.col,.column>.col-0,.column>.col-1,.column>.col-10,.column>.col-11,.column>.col-12,.column>.col-2,.column>.col-3,.column>.col-4,.column>.col-5,.column>.col-6,.column>.col-7,.column>.col-8,.column>.col-9,.column>.col-auto,.column>.col-grow,.column>.col-shrink,.column>.col-xs,.column>.col-xs-0,.column>.col-xs-1,.column>.col-xs-10,.column>.col-xs-11,.column>.col-xs-12,.column>.col-xs-2,.column>.col-xs-3,.column>.col-xs-4,.column>.col-xs-5,.column>.col-xs-6,.column>.col-xs-7,.column>.col-xs-8,.column>.col-xs-9,.column>.col-xs-auto,.column>.col-xs-grow,.column>.col-xs-shrink,.flex>.col,.flex>.col-0,.flex>.col-1,.flex>.col-10,.flex>.col-11,.flex>.col-12,.flex>.col-2,.flex>.col-3,.flex>.col-4,.flex>.col-5,.flex>.col-6,.flex>.col-7,.flex>.col-8,.flex>.col-9,.flex>.col-auto,.flex>.col-grow,.flex>.col-shrink,.flex>.col-xs,.flex>.col-xs-0,.flex>.col-xs-1,.flex>.col-xs-10,.flex>.col-xs-11,.flex>.col-xs-12,.flex>.col-xs-2,.flex>.col-xs-3,.flex>.col-xs-4,.flex>.col-xs-5,.flex>.col-xs-6,.flex>.col-xs-7,.flex>.col-xs-8,.flex>.col-xs-9,.flex>.col-xs-auto,.flex>.col-xs-grow,.flex>.col-xs-shrink{height:auto;max-height:100%;min-height:0}.col,.col-xs{flex:10000 1 0%}.col-0,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-xs-0,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-auto{flex:0 0 auto}.col-grow,.col-xs-grow{flex:1 0 auto}.col-shrink,.col-xs-shrink{flex:0 1 auto}.row>.col-0,.row>.col-xs-0{height:auto;width:0}.row>.offset-0,.row>.offset-xs-0{margin-left:0}.column>.col-0,.column>.col-xs-0{height:0;width:auto}.row>.col-1,.row>.col-xs-1{height:auto;width:8.3333%}.row>.offset-1,.row>.offset-xs-1{margin-left:8.3333%}.column>.col-1,.column>.col-xs-1{height:8.3333%;width:auto}.row>.col-2,.row>.col-xs-2{height:auto;width:16.6667%}.row>.offset-2,.row>.offset-xs-2{margin-left:16.6667%}.column>.col-2,.column>.col-xs-2{height:16.6667%;width:auto}.row>.col-3,.row>.col-xs-3{height:auto;width:25%}.row>.offset-3,.row>.offset-xs-3{margin-left:25%}.column>.col-3,.column>.col-xs-3{height:25%;width:auto}.row>.col-4,.row>.col-xs-4{height:auto;width:33.3333%}.row>.offset-4,.row>.offset-xs-4{margin-left:33.3333%}.column>.col-4,.column>.col-xs-4{height:33.3333%;width:auto}.row>.col-5,.row>.col-xs-5{height:auto;width:41.6667%}.row>.offset-5,.row>.offset-xs-5{margin-left:41.6667%}.column>.col-5,.column>.col-xs-5{height:41.6667%;width:auto}.row>.col-6,.row>.col-xs-6{height:auto;width:50%}.row>.offset-6,.row>.offset-xs-6{margin-left:50%}.column>.col-6,.column>.col-xs-6{height:50%;width:auto}.row>.col-7,.row>.col-xs-7{height:auto;width:58.3333%}.row>.offset-7,.row>.offset-xs-7{margin-left:58.3333%}.column>.col-7,.column>.col-xs-7{height:58.3333%;width:auto}.row>.col-8,.row>.col-xs-8{height:auto;width:66.6667%}.row>.offset-8,.row>.offset-xs-8{margin-left:66.6667%}.column>.col-8,.column>.col-xs-8{height:66.6667%;width:auto}.row>.col-9,.row>.col-xs-9{height:auto;width:75%}.row>.offset-9,.row>.offset-xs-9{margin-left:75%}.column>.col-9,.column>.col-xs-9{height:75%;width:auto}.row>.col-10,.row>.col-xs-10{height:auto;width:83.3333%}.row>.offset-10,.row>.offset-xs-10{margin-left:83.3333%}.column>.col-10,.column>.col-xs-10{height:83.3333%;width:auto}.row>.col-11,.row>.col-xs-11{height:auto;width:91.6667%}.row>.offset-11,.row>.offset-xs-11{margin-left:91.6667%}.column>.col-11,.column>.col-xs-11{height:91.6667%;width:auto}.row>.col-12,.row>.col-xs-12{height:auto;width:100%}.row>.offset-12,.row>.offset-xs-12{margin-left:100%}.column>.col-12,.column>.col-xs-12{height:100%;width:auto}.row>.col-all{flex:0 0 100%;height:auto}}@media (min-width:600px){.flex>.col-sm,.flex>.col-sm-0,.flex>.col-sm-1,.flex>.col-sm-10,.flex>.col-sm-11,.flex>.col-sm-12,.flex>.col-sm-2,.flex>.col-sm-3,.flex>.col-sm-4,.flex>.col-sm-5,.flex>.col-sm-6,.flex>.col-sm-7,.flex>.col-sm-8,.flex>.col-sm-9,.flex>.col-sm-auto,.flex>.col-sm-grow,.flex>.col-sm-shrink,.row>.col-sm,.row>.col-sm-0,.row>.col-sm-1,.row>.col-sm-10,.row>.col-sm-11,.row>.col-sm-12,.row>.col-sm-2,.row>.col-sm-3,.row>.col-sm-4,.row>.col-sm-5,.row>.col-sm-6,.row>.col-sm-7,.row>.col-sm-8,.row>.col-sm-9,.row>.col-sm-auto,.row>.col-sm-grow,.row>.col-sm-shrink{max-width:100%;min-width:0;width:auto}.column>.col-sm,.column>.col-sm-0,.column>.col-sm-1,.column>.col-sm-10,.column>.col-sm-11,.column>.col-sm-12,.column>.col-sm-2,.column>.col-sm-3,.column>.col-sm-4,.column>.col-sm-5,.column>.col-sm-6,.column>.col-sm-7,.column>.col-sm-8,.column>.col-sm-9,.column>.col-sm-auto,.column>.col-sm-grow,.column>.col-sm-shrink,.flex>.col-sm,.flex>.col-sm-0,.flex>.col-sm-1,.flex>.col-sm-10,.flex>.col-sm-11,.flex>.col-sm-12,.flex>.col-sm-2,.flex>.col-sm-3,.flex>.col-sm-4,.flex>.col-sm-5,.flex>.col-sm-6,.flex>.col-sm-7,.flex>.col-sm-8,.flex>.col-sm-9,.flex>.col-sm-auto,.flex>.col-sm-grow,.flex>.col-sm-shrink{height:auto;max-height:100%;min-height:0}.col-sm{flex:10000 1 0%}.col-sm-0,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto{flex:0 0 auto}.col-sm-grow{flex:1 0 auto}.col-sm-shrink{flex:0 1 auto}.row>.col-sm-0{height:auto;width:0}.row>.offset-sm-0{margin-left:0}.column>.col-sm-0{height:0;width:auto}.row>.col-sm-1{height:auto;width:8.3333%}.row>.offset-sm-1{margin-left:8.3333%}.column>.col-sm-1{height:8.3333%;width:auto}.row>.col-sm-2{height:auto;width:16.6667%}.row>.offset-sm-2{margin-left:16.6667%}.column>.col-sm-2{height:16.6667%;width:auto}.row>.col-sm-3{height:auto;width:25%}.row>.offset-sm-3{margin-left:25%}.column>.col-sm-3{height:25%;width:auto}.row>.col-sm-4{height:auto;width:33.3333%}.row>.offset-sm-4{margin-left:33.3333%}.column>.col-sm-4{height:33.3333%;width:auto}.row>.col-sm-5{height:auto;width:41.6667%}.row>.offset-sm-5{margin-left:41.6667%}.column>.col-sm-5{height:41.6667%;width:auto}.row>.col-sm-6{height:auto;width:50%}.row>.offset-sm-6{margin-left:50%}.column>.col-sm-6{height:50%;width:auto}.row>.col-sm-7{height:auto;width:58.3333%}.row>.offset-sm-7{margin-left:58.3333%}.column>.col-sm-7{height:58.3333%;width:auto}.row>.col-sm-8{height:auto;width:66.6667%}.row>.offset-sm-8{margin-left:66.6667%}.column>.col-sm-8{height:66.6667%;width:auto}.row>.col-sm-9{height:auto;width:75%}.row>.offset-sm-9{margin-left:75%}.column>.col-sm-9{height:75%;width:auto}.row>.col-sm-10{height:auto;width:83.3333%}.row>.offset-sm-10{margin-left:83.3333%}.column>.col-sm-10{height:83.3333%;width:auto}.row>.col-sm-11{height:auto;width:91.6667%}.row>.offset-sm-11{margin-left:91.6667%}.column>.col-sm-11{height:91.6667%;width:auto}.row>.col-sm-12{height:auto;width:100%}.row>.offset-sm-12{margin-left:100%}.column>.col-sm-12{height:100%;width:auto}}@media (min-width:1024px){.flex>.col-md,.flex>.col-md-0,.flex>.col-md-1,.flex>.col-md-10,.flex>.col-md-11,.flex>.col-md-12,.flex>.col-md-2,.flex>.col-md-3,.flex>.col-md-4,.flex>.col-md-5,.flex>.col-md-6,.flex>.col-md-7,.flex>.col-md-8,.flex>.col-md-9,.flex>.col-md-auto,.flex>.col-md-grow,.flex>.col-md-shrink,.row>.col-md,.row>.col-md-0,.row>.col-md-1,.row>.col-md-10,.row>.col-md-11,.row>.col-md-12,.row>.col-md-2,.row>.col-md-3,.row>.col-md-4,.row>.col-md-5,.row>.col-md-6,.row>.col-md-7,.row>.col-md-8,.row>.col-md-9,.row>.col-md-auto,.row>.col-md-grow,.row>.col-md-shrink{max-width:100%;min-width:0;width:auto}.column>.col-md,.column>.col-md-0,.column>.col-md-1,.column>.col-md-10,.column>.col-md-11,.column>.col-md-12,.column>.col-md-2,.column>.col-md-3,.column>.col-md-4,.column>.col-md-5,.column>.col-md-6,.column>.col-md-7,.column>.col-md-8,.column>.col-md-9,.column>.col-md-auto,.column>.col-md-grow,.column>.col-md-shrink,.flex>.col-md,.flex>.col-md-0,.flex>.col-md-1,.flex>.col-md-10,.flex>.col-md-11,.flex>.col-md-12,.flex>.col-md-2,.flex>.col-md-3,.flex>.col-md-4,.flex>.col-md-5,.flex>.col-md-6,.flex>.col-md-7,.flex>.col-md-8,.flex>.col-md-9,.flex>.col-md-auto,.flex>.col-md-grow,.flex>.col-md-shrink{height:auto;max-height:100%;min-height:0}.col-md{flex:10000 1 0%}.col-md-0,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto{flex:0 0 auto}.col-md-grow{flex:1 0 auto}.col-md-shrink{flex:0 1 auto}.row>.col-md-0{height:auto;width:0}.row>.offset-md-0{margin-left:0}.column>.col-md-0{height:0;width:auto}.row>.col-md-1{height:auto;width:8.3333%}.row>.offset-md-1{margin-left:8.3333%}.column>.col-md-1{height:8.3333%;width:auto}.row>.col-md-2{height:auto;width:16.6667%}.row>.offset-md-2{margin-left:16.6667%}.column>.col-md-2{height:16.6667%;width:auto}.row>.col-md-3{height:auto;width:25%}.row>.offset-md-3{margin-left:25%}.column>.col-md-3{height:25%;width:auto}.row>.col-md-4{height:auto;width:33.3333%}.row>.offset-md-4{margin-left:33.3333%}.column>.col-md-4{height:33.3333%;width:auto}.row>.col-md-5{height:auto;width:41.6667%}.row>.offset-md-5{margin-left:41.6667%}.column>.col-md-5{height:41.6667%;width:auto}.row>.col-md-6{height:auto;width:50%}.row>.offset-md-6{margin-left:50%}.column>.col-md-6{height:50%;width:auto}.row>.col-md-7{height:auto;width:58.3333%}.row>.offset-md-7{margin-left:58.3333%}.column>.col-md-7{height:58.3333%;width:auto}.row>.col-md-8{height:auto;width:66.6667%}.row>.offset-md-8{margin-left:66.6667%}.column>.col-md-8{height:66.6667%;width:auto}.row>.col-md-9{height:auto;width:75%}.row>.offset-md-9{margin-left:75%}.column>.col-md-9{height:75%;width:auto}.row>.col-md-10{height:auto;width:83.3333%}.row>.offset-md-10{margin-left:83.3333%}.column>.col-md-10{height:83.3333%;width:auto}.row>.col-md-11{height:auto;width:91.6667%}.row>.offset-md-11{margin-left:91.6667%}.column>.col-md-11{height:91.6667%;width:auto}.row>.col-md-12{height:auto;width:100%}.row>.offset-md-12{margin-left:100%}.column>.col-md-12{height:100%;width:auto}}@media (min-width:1440px){.flex>.col-lg,.flex>.col-lg-0,.flex>.col-lg-1,.flex>.col-lg-10,.flex>.col-lg-11,.flex>.col-lg-12,.flex>.col-lg-2,.flex>.col-lg-3,.flex>.col-lg-4,.flex>.col-lg-5,.flex>.col-lg-6,.flex>.col-lg-7,.flex>.col-lg-8,.flex>.col-lg-9,.flex>.col-lg-auto,.flex>.col-lg-grow,.flex>.col-lg-shrink,.row>.col-lg,.row>.col-lg-0,.row>.col-lg-1,.row>.col-lg-10,.row>.col-lg-11,.row>.col-lg-12,.row>.col-lg-2,.row>.col-lg-3,.row>.col-lg-4,.row>.col-lg-5,.row>.col-lg-6,.row>.col-lg-7,.row>.col-lg-8,.row>.col-lg-9,.row>.col-lg-auto,.row>.col-lg-grow,.row>.col-lg-shrink{max-width:100%;min-width:0;width:auto}.column>.col-lg,.column>.col-lg-0,.column>.col-lg-1,.column>.col-lg-10,.column>.col-lg-11,.column>.col-lg-12,.column>.col-lg-2,.column>.col-lg-3,.column>.col-lg-4,.column>.col-lg-5,.column>.col-lg-6,.column>.col-lg-7,.column>.col-lg-8,.column>.col-lg-9,.column>.col-lg-auto,.column>.col-lg-grow,.column>.col-lg-shrink,.flex>.col-lg,.flex>.col-lg-0,.flex>.col-lg-1,.flex>.col-lg-10,.flex>.col-lg-11,.flex>.col-lg-12,.flex>.col-lg-2,.flex>.col-lg-3,.flex>.col-lg-4,.flex>.col-lg-5,.flex>.col-lg-6,.flex>.col-lg-7,.flex>.col-lg-8,.flex>.col-lg-9,.flex>.col-lg-auto,.flex>.col-lg-grow,.flex>.col-lg-shrink{height:auto;max-height:100%;min-height:0}.col-lg{flex:10000 1 0%}.col-lg-0,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto{flex:0 0 auto}.col-lg-grow{flex:1 0 auto}.col-lg-shrink{flex:0 1 auto}.row>.col-lg-0{height:auto;width:0}.row>.offset-lg-0{margin-left:0}.column>.col-lg-0{height:0;width:auto}.row>.col-lg-1{height:auto;width:8.3333%}.row>.offset-lg-1{margin-left:8.3333%}.column>.col-lg-1{height:8.3333%;width:auto}.row>.col-lg-2{height:auto;width:16.6667%}.row>.offset-lg-2{margin-left:16.6667%}.column>.col-lg-2{height:16.6667%;width:auto}.row>.col-lg-3{height:auto;width:25%}.row>.offset-lg-3{margin-left:25%}.column>.col-lg-3{height:25%;width:auto}.row>.col-lg-4{height:auto;width:33.3333%}.row>.offset-lg-4{margin-left:33.3333%}.column>.col-lg-4{height:33.3333%;width:auto}.row>.col-lg-5{height:auto;width:41.6667%}.row>.offset-lg-5{margin-left:41.6667%}.column>.col-lg-5{height:41.6667%;width:auto}.row>.col-lg-6{height:auto;width:50%}.row>.offset-lg-6{margin-left:50%}.column>.col-lg-6{height:50%;width:auto}.row>.col-lg-7{height:auto;width:58.3333%}.row>.offset-lg-7{margin-left:58.3333%}.column>.col-lg-7{height:58.3333%;width:auto}.row>.col-lg-8{height:auto;width:66.6667%}.row>.offset-lg-8{margin-left:66.6667%}.column>.col-lg-8{height:66.6667%;width:auto}.row>.col-lg-9{height:auto;width:75%}.row>.offset-lg-9{margin-left:75%}.column>.col-lg-9{height:75%;width:auto}.row>.col-lg-10{height:auto;width:83.3333%}.row>.offset-lg-10{margin-left:83.3333%}.column>.col-lg-10{height:83.3333%;width:auto}.row>.col-lg-11{height:auto;width:91.6667%}.row>.offset-lg-11{margin-left:91.6667%}.column>.col-lg-11{height:91.6667%;width:auto}.row>.col-lg-12{height:auto;width:100%}.row>.offset-lg-12{margin-left:100%}.column>.col-lg-12{height:100%;width:auto}}@media (min-width:1920px){.flex>.col-xl,.flex>.col-xl-0,.flex>.col-xl-1,.flex>.col-xl-10,.flex>.col-xl-11,.flex>.col-xl-12,.flex>.col-xl-2,.flex>.col-xl-3,.flex>.col-xl-4,.flex>.col-xl-5,.flex>.col-xl-6,.flex>.col-xl-7,.flex>.col-xl-8,.flex>.col-xl-9,.flex>.col-xl-auto,.flex>.col-xl-grow,.flex>.col-xl-shrink,.row>.col-xl,.row>.col-xl-0,.row>.col-xl-1,.row>.col-xl-10,.row>.col-xl-11,.row>.col-xl-12,.row>.col-xl-2,.row>.col-xl-3,.row>.col-xl-4,.row>.col-xl-5,.row>.col-xl-6,.row>.col-xl-7,.row>.col-xl-8,.row>.col-xl-9,.row>.col-xl-auto,.row>.col-xl-grow,.row>.col-xl-shrink{max-width:100%;min-width:0;width:auto}.column>.col-xl,.column>.col-xl-0,.column>.col-xl-1,.column>.col-xl-10,.column>.col-xl-11,.column>.col-xl-12,.column>.col-xl-2,.column>.col-xl-3,.column>.col-xl-4,.column>.col-xl-5,.column>.col-xl-6,.column>.col-xl-7,.column>.col-xl-8,.column>.col-xl-9,.column>.col-xl-auto,.column>.col-xl-grow,.column>.col-xl-shrink,.flex>.col-xl,.flex>.col-xl-0,.flex>.col-xl-1,.flex>.col-xl-10,.flex>.col-xl-11,.flex>.col-xl-12,.flex>.col-xl-2,.flex>.col-xl-3,.flex>.col-xl-4,.flex>.col-xl-5,.flex>.col-xl-6,.flex>.col-xl-7,.flex>.col-xl-8,.flex>.col-xl-9,.flex>.col-xl-auto,.flex>.col-xl-grow,.flex>.col-xl-shrink{height:auto;max-height:100%;min-height:0}.col-xl{flex:10000 1 0%}.col-xl-0,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{flex:0 0 auto}.col-xl-grow{flex:1 0 auto}.col-xl-shrink{flex:0 1 auto}.row>.col-xl-0{height:auto;width:0}.row>.offset-xl-0{margin-left:0}.column>.col-xl-0{height:0;width:auto}.row>.col-xl-1{height:auto;width:8.3333%}.row>.offset-xl-1{margin-left:8.3333%}.column>.col-xl-1{height:8.3333%;width:auto}.row>.col-xl-2{height:auto;width:16.6667%}.row>.offset-xl-2{margin-left:16.6667%}.column>.col-xl-2{height:16.6667%;width:auto}.row>.col-xl-3{height:auto;width:25%}.row>.offset-xl-3{margin-left:25%}.column>.col-xl-3{height:25%;width:auto}.row>.col-xl-4{height:auto;width:33.3333%}.row>.offset-xl-4{margin-left:33.3333%}.column>.col-xl-4{height:33.3333%;width:auto}.row>.col-xl-5{height:auto;width:41.6667%}.row>.offset-xl-5{margin-left:41.6667%}.column>.col-xl-5{height:41.6667%;width:auto}.row>.col-xl-6{height:auto;width:50%}.row>.offset-xl-6{margin-left:50%}.column>.col-xl-6{height:50%;width:auto}.row>.col-xl-7{height:auto;width:58.3333%}.row>.offset-xl-7{margin-left:58.3333%}.column>.col-xl-7{height:58.3333%;width:auto}.row>.col-xl-8{height:auto;width:66.6667%}.row>.offset-xl-8{margin-left:66.6667%}.column>.col-xl-8{height:66.6667%;width:auto}.row>.col-xl-9{height:auto;width:75%}.row>.offset-xl-9{margin-left:75%}.column>.col-xl-9{height:75%;width:auto}.row>.col-xl-10{height:auto;width:83.3333%}.row>.offset-xl-10{margin-left:83.3333%}.column>.col-xl-10{height:83.3333%;width:auto}.row>.col-xl-11{height:auto;width:91.6667%}.row>.offset-xl-11{margin-left:91.6667%}.column>.col-xl-11{height:91.6667%;width:auto}.row>.col-xl-12{height:auto;width:100%}.row>.offset-xl-12{margin-left:100%}.column>.col-xl-12{height:100%;width:auto}}.rounded-borders{border-radius:4px}.border-radius-inherit{border-radius:inherit}.no-transition{transition:none!important}.transition-0{transition:0s!important}.glossy{background-image:linear-gradient(180deg,#ffffff4d,#fff0 50%,#0000001f 51%,#0000000a)!important}.q-placeholder::placeholder{color:inherit;opacity:.7}.q-body--fullscreen-mixin,.q-body--prevent-scroll{position:fixed!important}.q-body--force-scrollbar-x{overflow-x:scroll}.q-body--force-scrollbar-y{overflow-y:scroll}.q-no-input-spinner{-moz-appearance:textfield!important}.q-no-input-spinner::-webkit-inner-spin-button,.q-no-input-spinner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.q-link{outline:0;text-decoration:none}.q-link--focusable:focus-visible{-webkit-text-decoration:underline dashed currentColor 1px;text-decoration:underline dashed currentColor 1px}body.electron .q-electron-drag{-webkit-app-region:drag;-webkit-user-select:none}body.electron .q-electron-drag .q-btn-item,body.electron .q-electron-drag--exception{-webkit-app-region:no-drag}img.responsive{height:auto;max-width:100%}.non-selectable{-webkit-user-select:none!important;user-select:none!important}.scroll,body.mobile .scroll--mobile{overflow:auto}.scroll,.scroll-x,.scroll-y{-webkit-overflow-scrolling:touch;will-change:scroll-position}.scroll-x{overflow-x:auto}.scroll-y{overflow-y:auto}.no-scroll{overflow:hidden!important}.no-pointer-events,.no-pointer-events--children,.no-pointer-events--children *{pointer-events:none!important}.all-pointer-events{pointer-events:all!important}.cursor-pointer{cursor:pointer!important}.cursor-not-allowed{cursor:not-allowed!important}.cursor-inherit{cursor:inherit!important}.cursor-none{cursor:none!important}[aria-busy=true]{cursor:progress}[aria-controls]{cursor:pointer}[aria-disabled]{cursor:default}.rotate-45{transform:rotate(45deg)}.rotate-90{transform:rotate(90deg)}.rotate-135{transform:rotate(135deg)}.rotate-180{transform:rotate(180deg)}.rotate-225{transform:rotate(225deg)}.rotate-270{transform:rotate(270deg)}.rotate-315{transform:rotate(315deg)}.flip-horizontal{transform:scaleX(-1)}.flip-vertical{transform:scaleY(-1)}.float-left{float:left}.float-right{float:right}.relative-position{position:relative}.fixed,.fixed-bottom,.fixed-bottom-left,.fixed-bottom-right,.fixed-center,.fixed-full,.fixed-left,.fixed-right,.fixed-top,.fixed-top-left,.fixed-top-right,.fullscreen{position:fixed}.absolute,.absolute-bottom,.absolute-bottom-left,.absolute-bottom-right,.absolute-center,.absolute-full,.absolute-left,.absolute-right,.absolute-top,.absolute-top-left,.absolute-top-right{position:absolute}.absolute-top,.fixed-top{left:0;right:0;top:0}.absolute-right,.fixed-right{bottom:0;right:0;top:0}.absolute-bottom,.fixed-bottom{bottom:0;left:0;right:0}.absolute-left,.fixed-left{bottom:0;left:0;top:0}.absolute-top-left,.fixed-top-left{left:0;top:0}.absolute-top-right,.fixed-top-right{right:0;top:0}.absolute-bottom-left,.fixed-bottom-left{bottom:0;left:0}.absolute-bottom-right,.fixed-bottom-right{bottom:0;right:0}.fullscreen{border-radius:0!important;max-height:100vh;max-width:100vw;z-index:6000}body.q-ios-padding .fullscreen{padding-bottom:env(safe-area-inset-bottom)!important;padding-top:env(safe-area-inset-top)!important}.absolute-full,.fixed-full,.fullscreen{bottom:0;left:0;right:0;top:0}.absolute-center,.fixed-center{left:50%;top:50%;transform:translate(-50%,-50%)}.vertical-top{vertical-align:top!important}.vertical-middle{vertical-align:middle!important}.vertical-bottom{vertical-align:bottom!important}.on-left{margin-right:12px}.on-right{margin-left:12px}.q-position-engine{margin-left:var(--q-pe-left,0)!important;margin-top:var(--q-pe-top,0)!important;visibility:collapse;will-change:auto}:root{--q-size-xs:0;--q-size-sm:600px;--q-size-md:1024px;--q-size-lg:1440px;--q-size-xl:1920px}.fit{width:100%!important}.fit,.full-height{height:100%!important}.full-width{margin-left:0!important;margin-right:0!important;width:100%!important}.window-height{height:100vh!important;margin-bottom:0!important;margin-top:0!important}.window-width{margin-left:0!important;margin-right:0!important;width:100vw!important}.block{display:block!important}.inline-block{display:inline-block!important}.q-pa-none{padding:0}.q-pl-none{padding-left:0}.q-pr-none{padding-right:0}.q-pt-none{padding-top:0}.q-pb-none{padding-bottom:0}.q-px-none{padding-left:0;padding-right:0}.q-py-none{padding-bottom:0;padding-top:0}.q-ma-none{margin:0}.q-ml-none{margin-left:0}.q-mr-none{margin-right:0}.q-mt-none{margin-top:0}.q-mb-none{margin-bottom:0}.q-mx-none{margin-left:0;margin-right:0}.q-my-none{margin-bottom:0;margin-top:0}.q-pa-xs{padding:4px}.q-pl-xs{padding-left:4px}.q-pr-xs{padding-right:4px}.q-pt-xs{padding-top:4px}.q-pb-xs{padding-bottom:4px}.q-px-xs{padding-left:4px;padding-right:4px}.q-py-xs{padding-bottom:4px;padding-top:4px}.q-ma-xs{margin:4px}.q-ml-xs{margin-left:4px}.q-mr-xs{margin-right:4px}.q-mt-xs{margin-top:4px}.q-mb-xs{margin-bottom:4px}.q-mx-xs{margin-left:4px;margin-right:4px}.q-my-xs{margin-bottom:4px;margin-top:4px}.q-pa-sm{padding:8px}.q-pl-sm{padding-left:8px}.q-pr-sm{padding-right:8px}.q-pt-sm{padding-top:8px}.q-pb-sm{padding-bottom:8px}.q-px-sm{padding-left:8px;padding-right:8px}.q-py-sm{padding-bottom:8px;padding-top:8px}.q-ma-sm{margin:8px}.q-ml-sm{margin-left:8px}.q-mr-sm{margin-right:8px}.q-mt-sm{margin-top:8px}.q-mb-sm{margin-bottom:8px}.q-mx-sm{margin-left:8px;margin-right:8px}.q-my-sm{margin-bottom:8px;margin-top:8px}.q-pa-md{padding:16px}.q-pl-md{padding-left:16px}.q-pr-md{padding-right:16px}.q-pt-md{padding-top:16px}.q-pb-md{padding-bottom:16px}.q-px-md{padding-left:16px;padding-right:16px}.q-py-md{padding-bottom:16px;padding-top:16px}.q-ma-md{margin:16px}.q-ml-md{margin-left:16px}.q-mr-md{margin-right:16px}.q-mt-md{margin-top:16px}.q-mb-md{margin-bottom:16px}.q-mx-md{margin-left:16px;margin-right:16px}.q-my-md{margin-bottom:16px;margin-top:16px}.q-pa-lg{padding:24px}.q-pl-lg{padding-left:24px}.q-pr-lg{padding-right:24px}.q-pt-lg{padding-top:24px}.q-pb-lg{padding-bottom:24px}.q-px-lg{padding-left:24px;padding-right:24px}.q-py-lg{padding-bottom:24px;padding-top:24px}.q-ma-lg{margin:24px}.q-ml-lg{margin-left:24px}.q-mr-lg{margin-right:24px}.q-mt-lg{margin-top:24px}.q-mb-lg{margin-bottom:24px}.q-mx-lg{margin-left:24px;margin-right:24px}.q-my-lg{margin-bottom:24px;margin-top:24px}.q-pa-xl{padding:48px}.q-pl-xl{padding-left:48px}.q-pr-xl{padding-right:48px}.q-pt-xl{padding-top:48px}.q-pb-xl{padding-bottom:48px}.q-px-xl{padding-left:48px;padding-right:48px}.q-py-xl{padding-bottom:48px;padding-top:48px}.q-ma-xl{margin:48px}.q-ml-xl{margin-left:48px}.q-mr-xl{margin-right:48px}.q-mt-xl{margin-top:48px}.q-mb-xl{margin-bottom:48px}.q-mx-xl{margin-left:48px;margin-right:48px}.q-my-xl{margin-bottom:48px;margin-top:48px}.q-mt-auto,.q-my-auto{margin-top:auto}.q-ml-auto{margin-left:auto}.q-mb-auto,.q-my-auto{margin-bottom:auto}.q-mr-auto,.q-mx-auto{margin-right:auto}.q-mx-auto{margin-left:auto}.q-touch{user-drag:none;-khtml-user-drag:none;-webkit-user-drag:none;-webkit-user-select:none;user-select:none}.q-touch-x{touch-action:pan-x}.q-touch-y{touch-action:pan-y}:root{--q-transition-duration:.3s}.q-transition--fade-enter-active,.q-transition--fade-leave-active,.q-transition--flip-enter-active,.q-transition--flip-leave-active,.q-transition--jump-down-enter-active,.q-transition--jump-down-leave-active,.q-transition--jump-left-enter-active,.q-transition--jump-left-leave-active,.q-transition--jump-right-enter-active,.q-transition--jump-right-leave-active,.q-transition--jump-up-enter-active,.q-transition--jump-up-leave-active,.q-transition--rotate-enter-active,.q-transition--rotate-leave-active,.q-transition--scale-enter-active,.q-transition--scale-leave-active,.q-transition--slide-down-enter-active,.q-transition--slide-down-leave-active,.q-transition--slide-left-enter-active,.q-transition--slide-left-leave-active,.q-transition--slide-right-enter-active,.q-transition--slide-right-leave-active,.q-transition--slide-up-enter-active,.q-transition--slide-up-leave-active{--q-transition-duration:.3s;--q-transition-easing:cubic-bezier(0.215,0.61,0.355,1)}.q-transition--fade-leave-active,.q-transition--flip-leave-active,.q-transition--jump-down-leave-active,.q-transition--jump-left-leave-active,.q-transition--jump-right-leave-active,.q-transition--jump-up-leave-active,.q-transition--rotate-leave-active,.q-transition--scale-leave-active,.q-transition--slide-down-leave-active,.q-transition--slide-left-leave-active,.q-transition--slide-right-leave-active,.q-transition--slide-up-leave-active{position:absolute}.q-transition--slide-down-enter-active,.q-transition--slide-down-leave-active,.q-transition--slide-left-enter-active,.q-transition--slide-left-leave-active,.q-transition--slide-right-enter-active,.q-transition--slide-right-leave-active,.q-transition--slide-up-enter-active,.q-transition--slide-up-leave-active{transition:transform var(--q-transition-duration) var(--q-transition-easing)}.q-transition--slide-right-enter-from{transform:translate3d(-100%,0,0)}.q-transition--slide-left-enter-from,.q-transition--slide-right-leave-to{transform:translate3d(100%,0,0)}.q-transition--slide-left-leave-to{transform:translate3d(-100%,0,0)}.q-transition--slide-up-enter-from{transform:translate3d(0,100%,0)}.q-transition--slide-down-enter-from,.q-transition--slide-up-leave-to{transform:translate3d(0,-100%,0)}.q-transition--slide-down-leave-to{transform:translate3d(0,100%,0)}.q-transition--jump-down-enter-active,.q-transition--jump-down-leave-active,.q-transition--jump-left-enter-active,.q-transition--jump-left-leave-active,.q-transition--jump-right-enter-active,.q-transition--jump-right-leave-active,.q-transition--jump-up-enter-active,.q-transition--jump-up-leave-active{transition:opacity var(--q-transition-duration),transform var(--q-transition-duration)}.q-transition--jump-down-enter-from,.q-transition--jump-down-leave-to,.q-transition--jump-left-enter-from,.q-transition--jump-left-leave-to,.q-transition--jump-right-enter-from,.q-transition--jump-right-leave-to,.q-transition--jump-up-enter-from,.q-transition--jump-up-leave-to{opacity:0}.q-transition--jump-right-enter-from{transform:translate3d(-15px,0,0)}.q-transition--jump-left-enter-from,.q-transition--jump-right-leave-to{transform:translate3d(15px,0,0)}.q-transition--jump-left-leave-to{transform:translateX(-15px)}.q-transition--jump-up-enter-from{transform:translate3d(0,15px,0)}.q-transition--jump-down-enter-from,.q-transition--jump-up-leave-to{transform:translate3d(0,-15px,0)}.q-transition--jump-down-leave-to{transform:translate3d(0,15px,0)}.q-transition--fade-enter-active,.q-transition--fade-leave-active{transition:opacity var(--q-transition-duration) ease-out}.q-transition--fade-enter-from,.q-transition--fade-leave-to{opacity:0}.q-transition--scale-enter-active,.q-transition--scale-leave-active{transition:opacity var(--q-transition-duration),transform var(--q-transition-duration) var(--q-transition-easing)}.q-transition--scale-enter-from,.q-transition--scale-leave-to{opacity:0;transform:scale3d(0,0,1)}.q-transition--rotate-enter-active,.q-transition--rotate-leave-active{transform-style:preserve-3d;transition:opacity var(--q-transition-duration),transform var(--q-transition-duration) var(--q-transition-easing)}.q-transition--rotate-enter-from,.q-transition--rotate-leave-to{opacity:0;transform:scale3d(0,0,1) rotate(90deg)}.q-transition--flip-down-enter-active,.q-transition--flip-down-leave-active,.q-transition--flip-left-enter-active,.q-transition--flip-left-leave-active,.q-transition--flip-right-enter-active,.q-transition--flip-right-leave-active,.q-transition--flip-up-enter-active,.q-transition--flip-up-leave-active{backface-visibility:hidden;transition:transform var(--q-transition-duration)}.q-transition--flip-down-enter-to,.q-transition--flip-down-leave-from,.q-transition--flip-left-enter-to,.q-transition--flip-left-leave-from,.q-transition--flip-right-enter-to,.q-transition--flip-right-leave-from,.q-transition--flip-up-enter-to,.q-transition--flip-up-leave-from{transform:perspective(400px) rotate3d(1,1,0,0deg)}.q-transition--flip-right-enter-from{transform:perspective(400px) rotateY(-180deg)}.q-transition--flip-left-enter-from,.q-transition--flip-right-leave-to{transform:perspective(400px) rotateY(180deg)}.q-transition--flip-left-leave-to{transform:perspective(400px) rotateY(-180deg)}.q-transition--flip-up-enter-from{transform:perspective(400px) rotateX(-180deg)}.q-transition--flip-down-enter-from,.q-transition--flip-up-leave-to{transform:perspective(400px) rotateX(180deg)}.q-transition--flip-down-leave-to{transform:perspective(400px) rotateX(-180deg)}body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-smoothing:antialiased;font-family:Roboto,-apple-system,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.5;min-height:100%;min-width:100px}h1{font-size:6rem;letter-spacing:-.01562em;line-height:6rem}h1,h2{font-weight:300}h2{font-size:3.75rem;letter-spacing:-.00833em;line-height:3.75rem}h3{font-size:3rem;letter-spacing:normal;line-height:3.125rem}h3,h4{font-weight:400}h4{font-size:2.125rem;letter-spacing:.00735em;line-height:2.5rem}h5{font-size:1.5rem;font-weight:400;letter-spacing:normal}h5,h6{line-height:2rem}h6{font-size:1.25rem;font-weight:500;letter-spacing:.0125em}p{margin:0 0 16px}.text-h1{font-size:6rem;font-weight:300;letter-spacing:-.01562em;line-height:6rem}.text-h2{font-size:3.75rem;font-weight:300;letter-spacing:-.00833em;line-height:3.75rem}.text-h3{font-size:3rem;font-weight:400;letter-spacing:normal;line-height:3.125rem}.text-h4{font-size:2.125rem;font-weight:400;letter-spacing:.00735em;line-height:2.5rem}.text-h5{font-size:1.5rem;font-weight:400;letter-spacing:normal;line-height:2rem}.text-h6{font-size:1.25rem;font-weight:500;letter-spacing:.0125em;line-height:2rem}.text-subtitle1{font-size:1rem;font-weight:400;letter-spacing:.00937em;line-height:1.75rem}.text-subtitle2{font-size:.875rem;font-weight:500;letter-spacing:.00714em;line-height:1.375rem}.text-body1{font-size:1rem;font-weight:400;letter-spacing:.03125em;line-height:1.5rem}.text-body2{font-size:.875rem;font-weight:400;letter-spacing:.01786em;line-height:1.25rem}.text-overline{font-size:.75rem;font-weight:500;letter-spacing:.16667em;line-height:2rem}.text-caption{font-size:.75rem;font-weight:400;letter-spacing:.03333em;line-height:1.25rem}.text-uppercase{text-transform:uppercase}.text-lowercase{text-transform:lowercase}.text-capitalize{text-transform:capitalize}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-justify{-webkit-hyphens:auto;hyphens:auto;text-align:justify}.text-italic{font-style:italic}.text-bold{font-weight:700}.text-no-wrap{white-space:nowrap}.text-strike{text-decoration:line-through}.text-weight-thin{font-weight:100}.text-weight-light{font-weight:300}.text-weight-regular{font-weight:400}.text-weight-medium{font-weight:500}.text-weight-bold{font-weight:700}.text-weight-bolder{font-weight:900}small{font-size:80%}big{font-size:170%}sub{bottom:-.25em}sup{top:-.5em}.no-margin{margin:0!important}.no-padding{padding:0!important}.no-border{border:0!important}.no-border-radius{border-radius:0!important}.no-box-shadow{box-shadow:none!important}.no-outline{outline:0!important}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ellipsis-2-lines,.ellipsis-3-lines{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.ellipsis-2-lines{-webkit-line-clamp:2}.ellipsis-3-lines{-webkit-line-clamp:3}.readonly{cursor:default!important}.disabled,.disabled *,[disabled],[disabled] *{cursor:not-allowed!important;outline:0!important}.disabled,[disabled]{opacity:.6!important}.hidden{display:none!important}.invisible,.invisible *{animation:none!important;transition:none!important;visibility:hidden!important}.transparent{background:#0000!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-hidden-y{overflow-y:hidden!important}.hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.hide-scrollbar::-webkit-scrollbar{display:none;height:0;width:0}.dimmed:after,.light-dimmed:after{bottom:0;content:"";left:0;position:absolute;right:0;top:0}.dimmed:after{background:#0006!important}.light-dimmed:after{background:#fff9!important}.z-top{z-index:7000!important}.z-max{z-index:9998!important}body.capacitor .capacitor-hide,body.cordova .cordova-hide,body.desktop .desktop-hide,body.electron .electron-hide,body.mobile .mobile-hide,body.native-mobile .native-mobile-hide,body.platform-android .platform-android-hide,body.platform-ios .platform-ios-hide,body.touch .touch-hide,body.within-iframe .within-iframe-hide,body:not(.capacitor) .capacitor-only,body:not(.cordova) .cordova-only,body:not(.desktop) .desktop-only,body:not(.electron) .electron-only,body:not(.mobile) .mobile-only,body:not(.native-mobile) .native-mobile-only,body:not(.platform-android) .platform-android-only,body:not(.platform-ios) .platform-ios-only,body:not(.touch) .touch-only,body:not(.within-iframe) .within-iframe-only{display:none!important}@media (orientation:portrait){.orientation-landscape{display:none!important}}@media (orientation:landscape){.orientation-portrait{display:none!important}}@media screen{.print-only{display:none!important}}@media print{.print-hide{display:none!important}}@media (max-width:599.98px){.gt-lg,.gt-md,.gt-sm,.gt-xs,.lg,.md,.sm,.xl,.xs-hide{display:none!important}}@media (min-width:600px) and (max-width:1023.98px){.gt-lg,.gt-md,.gt-sm,.lg,.lt-sm,.md,.sm-hide,.xl,.xs{display:none!important}}@media (min-width:1024px) and (max-width:1439.98px){.gt-lg,.gt-md,.lg,.lt-md,.lt-sm,.md-hide,.sm,.xl,.xs{display:none!important}}@media (min-width:1440px) and (max-width:1919.98px){.gt-lg,.lg-hide,.lt-lg,.lt-md,.lt-sm,.md,.sm,.xl,.xs{display:none!important}}@media (min-width:1920px){.lg,.lt-lg,.lt-md,.lt-sm,.lt-xl,.md,.sm,.xl-hide,.xs{display:none!important}}.q-focus-helper,.q-focusable,.q-hoverable,.q-manual-focusable{outline:0}body.desktop .q-focus-helper{border-radius:inherit;height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transition:background-color .3s cubic-bezier(.25,.8,.5,1),opacity .4s cubic-bezier(.25,.8,.5,1);width:100%}body.desktop .q-focus-helper:after,body.desktop .q-focus-helper:before{border-radius:inherit;content:"";height:100%;left:0;opacity:0;position:absolute;top:0;transition:background-color .3s cubic-bezier(.25,.8,.5,1),opacity .6s cubic-bezier(.25,.8,.5,1);width:100%}body.desktop .q-focus-helper:before{background:#000}body.desktop .q-focus-helper:after{background:#fff}body.desktop .q-focus-helper--rounded{border-radius:4px}body.desktop .q-focus-helper--round{border-radius:50%}body.desktop .q-focusable:focus>.q-focus-helper,body.desktop .q-hoverable:hover>.q-focus-helper,body.desktop .q-manual-focusable--focused>.q-focus-helper{background:currentColor;opacity:.15}body.desktop .q-focusable:focus>.q-focus-helper:before,body.desktop .q-hoverable:hover>.q-focus-helper:before,body.desktop .q-manual-focusable--focused>.q-focus-helper:before{opacity:.1}body.desktop .q-focusable:focus>.q-focus-helper:after,body.desktop .q-hoverable:hover>.q-focus-helper:after,body.desktop .q-manual-focusable--focused>.q-focus-helper:after{opacity:.4}body.desktop .q-focusable:focus>.q-focus-helper,body.desktop .q-manual-focusable--focused>.q-focus-helper{opacity:.22}body.body--dark{background:var(--q-dark-page);color:#fff}.q-dark{background:var(--q-dark);color:#fff} \ No newline at end of file diff --git a/dist/editor.worker.afbd84bf87ff32f64c63d43e1a5dde9a.js b/dist/editor.worker.afbd84bf87ff32f64c63d43e1a5dde9a.js new file mode 100644 index 00000000..6020953c --- /dev/null +++ b/dist/editor.worker.afbd84bf87ff32f64c63d43e1a5dde9a.js @@ -0,0 +1 @@ +(()=>{"use strict";var e={};(()=>{e.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()})();class t{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout((()=>{if(e.stack){if(l.isErrorNoTelemetry(e))throw new l(e.message+"\n\n"+e.stack);throw new Error(e.message+"\n\n"+e.stack)}throw e}),0)}}emit(e){this.listeners.forEach((t=>{t(e)}))}onUnexpectedError(e){this.unexpectedErrorHandler(e),this.emit(e)}onUnexpectedExternalError(e){this.unexpectedErrorHandler(e)}}const n=new t;function i(e){o(e)||n.onUnexpectedError(e)}function r(e){if(e instanceof Error){const{name:t,message:n}=e,i=e.stacktrace||e.stack;return{$isError:!0,name:t,message:n,stack:i,noTelemetry:l.isErrorNoTelemetry(e)}}return e}const s="Canceled";function o(e){return e instanceof a||e instanceof Error&&e.name===s&&e.message===s}class a extends Error{constructor(){super(s),this.name=this.message}}class l extends Error{constructor(e){super(e),this.name="CodeExpectedError"}static fromError(e){if(e instanceof l)return e;const t=new l;return t.message=e.message,t.stack=e.stack,t}static isErrorNoTelemetry(e){return"CodeExpectedError"===e.name}}class u extends Error{constructor(e){super(e||"An unexpected bug occurred."),Object.setPrototypeOf(this,u.prototype)}}function h(e){const t=this;let n,i=!1;return function(){return i||(i=!0,n=e.apply(t,arguments)),n}}var c;(function(e){function t(e){return e&&"object"===typeof e&&"function"===typeof e[Symbol.iterator]}e.is=t;const n=Object.freeze([]);function i(){return n}function*r(e){yield e}function s(e){return t(e)?e:r(e)}function o(e){return e||n}function a(e){return!e||!0===e[Symbol.iterator]().next().done}function l(e){return e[Symbol.iterator]().next().value}function u(e,t){for(const n of e)if(t(n))return!0;return!1}function h(e,t){for(const n of e)if(t(n))return n}function*c(e,t){for(const n of e)t(n)&&(yield n)}function*d(e,t){let n=0;for(const i of e)yield t(i,n++)}function*g(...e){for(const t of e)for(const e of t)yield e}function m(e,t,n){let i=n;for(const r of e)i=t(i,r);return i}function*f(e,t,n=e.length){for(t<0&&(t+=e.length),n<0?n+=e.length:n>e.length&&(n=e.length);t{t[e]||console.log(n)}),3e3)}setParent(t,n){if(t&&t!==L.None)try{t[e]=!0}catch(j){}}markAsDisposed(t){if(t&&t!==L.None)try{t[e]=!0}catch(j){}}markAsSingleton(e){}})}function f(e){return null===g||void 0===g||g.trackDisposable(e),e}function p(e){null===g||void 0===g||g.markAsDisposed(e)}function b(e,t){null===g||void 0===g||g.setParent(e,t)}function _(e,t){if(g)for(const n of e)g.setParent(n,t)}function C(e){if(c.is(e)){const n=[];for(const i of e)if(i)try{i.dispose()}catch(t){n.push(t)}if(1===n.length)throw n[0];if(n.length>1)throw new AggregateError(n,"Encountered errors while disposing of store");return Array.isArray(e)?[]:e}if(e)return e.dispose(),e}function y(...e){const t=v((()=>C(e)));return _(e,t),t}function v(e){const t=f({dispose:h((()=>{p(t),e()}))});return t}class w{constructor(){this._toDispose=new Set,this._isDisposed=!1,f(this)}dispose(){this._isDisposed||(p(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(0!==this._toDispose.size)try{C(this._toDispose)}finally{this._toDispose.clear()}}add(e){if(!e)return e;if(e===this)throw new Error("Cannot register a disposable on itself!");return b(e,this),this._isDisposed?w.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(e),e}}w.DISABLE_DISPOSED_WARNING=!1;class L{constructor(){this._store=new w,f(this),b(this._store,this)}dispose(){p(this),this._store.dispose()}_register(e){if(e===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(e)}}L.None=Object.freeze({dispose(){}});Symbol.iterator;class N{constructor(e){this.element=e,this.next=N.Undefined,this.prev=N.Undefined}}N.Undefined=new N(void 0);class S{constructor(){this._first=N.Undefined,this._last=N.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===N.Undefined}clear(){let e=this._first;while(e!==N.Undefined){const t=e.next;e.prev=N.Undefined,e.next=N.Undefined,e=t}this._first=N.Undefined,this._last=N.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){const n=new N(e);if(this._first===N.Undefined)this._first=n,this._last=n;else if(t){const e=this._last;this._last=n,n.prev=e,e.next=n}else{const e=this._first;this._first=n,n.next=e,e.prev=n}this._size+=1;let i=!1;return()=>{i||(i=!0,this._remove(n))}}shift(){if(this._first!==N.Undefined){const e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==N.Undefined){const e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==N.Undefined&&e.next!==N.Undefined){const t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===N.Undefined&&e.next===N.Undefined?(this._first=N.Undefined,this._last=N.Undefined):e.next===N.Undefined?(this._last=this._last.prev,this._last.next=N.Undefined):e.prev===N.Undefined&&(this._first=this._first.next,this._first.prev=N.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;while(e!==N.Undefined)yield e.element,e=e.next}}const E=globalThis.performance&&"function"===typeof globalThis.performance.now;class R{static create(e){return new R(e)}constructor(e){this._now=E&&!1===e?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}elapsed(){return-1!==this._stopTime?this._stopTime-this._startTime:this._now()-this._startTime}}const A=!1,x=!1;var M;(function(e){function t(e){if(x){const{onDidAddListener:t}=e,n=I.create();let i=0;e.onDidAddListener=()=>{2===++i&&(console.warn("snapshotted emitter LIKELY used public and SHOULD HAVE BEEN created with DisposableStore. snapshotted here"),n.print()),null===t||void 0===t||t()}}}function n(e,t){return c(e,(()=>{}),0,void 0,!0,void 0,t)}function i(e){return(t,n=null,i)=>{let r,s=!1;return r=e((e=>{if(!s)return r?r.dispose():s=!0,t.call(n,e)}),null,i),s&&r.dispose(),r}}function r(e,t,n){return h(((n,i=null,r)=>e((e=>n.call(i,t(e))),null,r)),n)}function s(e,t,n){return h(((n,i=null,r)=>e((e=>{t(e),n.call(i,e)}),null,r)),n)}function o(e,t,n){return h(((n,i=null,r)=>e((e=>t(e)&&n.call(i,e)),null,r)),n)}function a(e){return e}function l(...e){return(t,n=null,i)=>y(...e.map((e=>e((e=>t.call(n,e)),null,i))))}function u(e,t,n,i){let s=n;return r(e,(e=>(s=t(s,e),s)),i)}function h(e,n){let i;const r={onWillAddFirstListener(){i=e(s.fire,s)},onDidRemoveLastListener(){null===i||void 0===i||i.dispose()}};n||t(r);const s=new K(r);return null===n||void 0===n||n.add(s),s.event}function c(e,n,i=100,r=!1,s=!1,o,a){let l,u,h,c,d=0;const g={leakWarningThreshold:o,onWillAddFirstListener(){l=e((e=>{d++,u=n(u,e),r&&!h&&(m.fire(u),u=void 0),c=()=>{const e=u;u=void 0,h=void 0,(!r||d>1)&&m.fire(e),d=0},"number"===typeof i?(clearTimeout(h),h=setTimeout(c,i)):void 0===h&&(h=0,queueMicrotask(c))}))},onWillRemoveListener(){s&&d>0&&(null===c||void 0===c||c())},onDidRemoveLastListener(){c=void 0,l.dispose()}};a||t(g);const m=new K(g);return null===a||void 0===a||a.add(m),m.event}function d(t,n=0,i){return e.debounce(t,((e,t)=>e?(e.push(t),e):[t]),n,void 0,!0,void 0,i)}function g(e,t=((e,t)=>e===t),n){let i,r=!0;return o(e,(e=>{const n=r||!t(e,i);return r=!1,i=e,n}),n)}function m(t,n,i){return[e.filter(t,n,i),e.filter(t,(e=>!n(e)),i)]}function f(e,t=!1,n=[]){let i=n.slice(),r=e((e=>{i?i.push(e):o.fire(e)}));const s=()=>{null===i||void 0===i||i.forEach((e=>o.fire(e))),i=null},o=new K({onWillAddFirstListener(){r||(r=e((e=>o.fire(e))))},onDidAddFirstListener(){i&&(t?setTimeout(s):s())},onDidRemoveLastListener(){r&&r.dispose(),r=null}});return o.event}e.None=()=>L.None,e.defer=n,e.once=i,e.map=r,e.forEach=s,e.filter=o,e.signal=a,e.any=l,e.reduce=u,e.debounce=c,e.accumulate=d,e.latch=g,e.split=m,e.buffer=f;class p{constructor(e){this.event=e,this.disposables=new w}map(e){return new p(r(this.event,e,this.disposables))}forEach(e){return new p(s(this.event,e,this.disposables))}filter(e){return new p(o(this.event,e,this.disposables))}reduce(e,t){return new p(u(this.event,e,t,this.disposables))}latch(){return new p(g(this.event,void 0,this.disposables))}debounce(e,t=100,n=!1,i=!1,r){return new p(c(this.event,e,t,n,i,r,this.disposables))}on(e,t,n){return this.event(e,t,n)}once(e,t,n){return i(this.event)(e,t,n)}dispose(){this.disposables.dispose()}}function b(e){return new p(e)}function _(e,t,n=(e=>e)){const i=(...e)=>o.fire(n(...e)),r=()=>e.on(t,i),s=()=>e.removeListener(t,i),o=new K({onWillAddFirstListener:r,onDidRemoveLastListener:s});return o.event}function C(e,t,n=(e=>e)){const i=(...e)=>o.fire(n(...e)),r=()=>e.addEventListener(t,i),s=()=>e.removeEventListener(t,i),o=new K({onWillAddFirstListener:r,onDidRemoveLastListener:s});return o.event}function N(e){return new Promise((t=>i(e)(t)))}function S(e,t){return t(void 0),e((e=>t(e)))}function E(e,t){let n=null;function i(e){null===n||void 0===n||n.dispose(),n=new w,t(e,n)}i(void 0);const r=e((e=>i(e)));return v((()=>{r.dispose(),null===n||void 0===n||n.dispose()}))}e.chain=b,e.fromNodeEventEmitter=_,e.fromDOMEventEmitter=C,e.toPromise=N,e.runAndSubscribe=S,e.runAndSubscribeWithStore=E;class R{constructor(e,n){this._observable=e,this._counter=0,this._hasChanged=!1;const i={onWillAddFirstListener:()=>{e.addObserver(this)},onDidRemoveLastListener:()=>{e.removeObserver(this)}};n||t(i),this.emitter=new K(i),n&&n.add(this.emitter)}beginUpdate(e){this._counter++}handlePossibleChange(e){}handleChange(e,t){this._hasChanged=!0}endUpdate(e){this._counter--,0===this._counter&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}function A(e,t){const n=new R(e,t);return n.emitter.event}function M(e){return t=>{let n=0,i=!1;const r={beginUpdate(){n++},endUpdate(){n--,0===n&&(e.reportChanges(),i&&(i=!1,t()))},handlePossibleChange(){},handleChange(){i=!0}};return e.addObserver(r),e.reportChanges(),{dispose(){e.removeObserver(r)}}}}e.fromObservable=A,e.fromObservableLight=M})(M||(M={}));class k{constructor(e){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${e}_${k._idPool++}`,k.all.add(this)}start(e){this._stopWatch=new R,this.listenerCount=e}stop(){if(this._stopWatch){const e=this._stopWatch.elapsed();this.durations.push(e),this.elapsedOverall+=e,this.invocationCount+=1,this._stopWatch=void 0}}}k.all=new Set,k._idPool=0;let O=-1;class T{constructor(e,t=Math.random().toString(18).slice(2,5)){this.threshold=e,this.name=t,this._warnCountdown=0}dispose(){var e;null===(e=this._stacks)||void 0===e||e.clear()}check(e,t){const n=this.threshold;if(n<=0||t{const t=this._stacks.get(e.value)||0;this._stacks.set(e.value,t-1)}}}class I{static create(){var e;return new I(null!==(e=(new Error).stack)&&void 0!==e?e:"")}constructor(e){this.value=e}print(){console.warn(this.value.split("\n").slice(2).join("\n"))}}class P{constructor(e){this.value=e}}const D=2,F=(e,t)=>{if(e instanceof P)t(e);else for(let n=0;n0||(null===(t=this._options)||void 0===t?void 0:t.leakWarningThreshold)?new T(null!==(i=null===(n=this._options)||void 0===n?void 0:n.leakWarningThreshold)&&void 0!==i?i:O):void 0,this._perfMon=(null===(r=this._options)||void 0===r?void 0:r._profName)?new k(this._options._profName):void 0,this._deliveryQueue=null===(s=this._options)||void 0===s?void 0:s.deliveryQueue}dispose(){var e,t,n,i;if(!this._disposed){if(this._disposed=!0,(null===(e=this._deliveryQueue)||void 0===e?void 0:e.current)===this&&this._deliveryQueue.reset(),this._listeners){if(A){const e=this._listeners;queueMicrotask((()=>{F(e,(e=>{var t;return null===(t=e.stack)||void 0===t?void 0:t.print()}))}))}this._listeners=void 0,this._size=0}null===(n=null===(t=this._options)||void 0===t?void 0:t.onDidRemoveLastListener)||void 0===n||n.call(t),null===(i=this._leakageMon)||void 0===i||i.dispose()}}get event(){var e;return null!==(e=this._event)&&void 0!==e||(this._event=(e,t,n)=>{var i,r,s,o,a;if(this._leakageMon&&this._size>3*this._leakageMon.threshold)return console.warn(`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far`),L.None;if(this._disposed)return L.None;t&&(e=e.bind(t));const l=new P(e);let u,h;this._leakageMon&&this._size>=Math.ceil(.2*this._leakageMon.threshold)&&(l.stack=I.create(),u=this._leakageMon.check(l.stack,this._size+1)),A&&(l.stack=null!==h&&void 0!==h?h:I.create()),this._listeners?this._listeners instanceof P?(null!==(a=this._deliveryQueue)&&void 0!==a||(this._deliveryQueue=new V),this._listeners=[this._listeners,l]):this._listeners.push(l):(null===(r=null===(i=this._options)||void 0===i?void 0:i.onWillAddFirstListener)||void 0===r||r.call(i,this),this._listeners=l,null===(o=null===(s=this._options)||void 0===s?void 0:s.onDidAddFirstListener)||void 0===o||o.call(s,this)),this._size++;const c=v((()=>{null===u||void 0===u||u(),this._removeListener(l)}));return n instanceof w?n.add(c):Array.isArray(n)&&n.push(c),c}),this._event}_removeListener(e){var t,n,i,r;if(null===(n=null===(t=this._options)||void 0===t?void 0:t.onWillRemoveListener)||void 0===n||n.call(t,this),!this._listeners)return;if(1===this._size)return this._listeners=void 0,null===(r=null===(i=this._options)||void 0===i?void 0:i.onDidRemoveLastListener)||void 0===r||r.call(i,this),void(this._size=0);const s=this._listeners,o=s.indexOf(e);if(-1===o)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,s[o]=void 0;const a=this._deliveryQueue.current===this;if(this._size*D<=s.length){let e=0;for(let t=0;t0}}class V{constructor(){this.i=-1,this.end=0}enqueue(e,t,n){this.i=0,this.end=n,this.current=e,this.value=t}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}Object.prototype.hasOwnProperty;function q(e){let t=[];while(Object.prototype!==e)t=t.concat(Object.getOwnPropertyNames(e)),e=Object.getPrototypeOf(e);return t}function B(e){const t=[];for(const n of q(e))"function"===typeof e[n]&&t.push(n);return t}function U(e,t){const n=e=>function(){const n=Array.prototype.slice.call(arguments,0);return t(e,n)},i={};for(const r of e)i[r]=n(r);return i}let W="undefined"!==typeof document&&document.location&&document.location.hash.indexOf("pseudo=true")>=0;function H(e,t){let n;return n=0===t.length?e:e.replace(/\{(\d+)\}/g,((e,n)=>{const i=n[0],r=t[i];let s=e;return"string"===typeof r?s=r:"number"!==typeof r&&"boolean"!==typeof r&&void 0!==r&&null!==r||(s=String(r)),s})),W&&(n="["+n.replace(/[aouei]/g,"$&$&")+"]"),n}function $(e,t,...n){return H(t,n)}function z(e){}var j;const G="en";let Q,Y,J=!1,X=!1,Z=!1,ee=!1,te=!1,ne=!1,ie=!1,re=!1,se=!1,oe=!1,ae=null,le=null,ue=null;const he="object"===typeof self?self:"object"===typeof e.g?e.g:{};let ce;"undefined"!==typeof he.vscode&&"undefined"!==typeof he.vscode.process?ce=he.vscode.process:"undefined"!==typeof process&&(ce=process);const de="string"===typeof(null===(j=null===ce||void 0===ce?void 0:ce.versions)||void 0===j?void 0:j.electron),ge=de&&"renderer"===(null===ce||void 0===ce?void 0:ce.type);if("object"!==typeof navigator||ge)if("object"===typeof ce){J="win32"===ce.platform,X="darwin"===ce.platform,Z="linux"===ce.platform,ee=Z&&!!ce.env["SNAP"]&&!!ce.env["SNAP_REVISION"],ie=de,se=!!ce.env["CI"]||!!ce.env["BUILD_ARTIFACTSTAGINGDIRECTORY"],Q=G,ae=G;const e=ce.env["VSCODE_NLS_CONFIG"];if(e)try{const t=JSON.parse(e),n=t.availableLanguages["*"];Q=t.locale,le=t.osLocale,ae=n||G,ue=t._translationsConfigFile}catch(xs){}te=!0}else console.error("Unable to resolve platform.");else{Y=navigator.userAgent,J=Y.indexOf("Windows")>=0,X=Y.indexOf("Macintosh")>=0,re=(Y.indexOf("Macintosh")>=0||Y.indexOf("iPad")>=0||Y.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,Z=Y.indexOf("Linux")>=0,oe=(null===Y||void 0===Y?void 0:Y.indexOf("Mobi"))>=0,ne=!0;const e=z($({key:"ensureLoaderPluginIsLoaded",comment:["{Locked}"]},"_"));Q=e||G,ae=Q,le=navigator.language}let me=0;X?me=1:J?me=3:Z&&(me=2);const fe=J,pe=X,be=(ne&&he.importScripts,Y),_e="function"===typeof he.postMessage&&!he.importScripts;(()=>{if(_e){const e=[];he.addEventListener("message",(t=>{if(t.data&&t.data.vscodeScheduleAsyncWork)for(let n=0,i=e.length;n{const i=++t;e.push({id:i,callback:n}),he.postMessage({vscodeScheduleAsyncWork:i},"*")}}})();const Ce=!!(be&&be.indexOf("Chrome")>=0);be&&be.indexOf("Firefox"),!Ce&&be&&be.indexOf("Safari"),be&&be.indexOf("Edg/"),be&&be.indexOf("Android");class ye{constructor(e){this.fn=e,this.lastCache=void 0,this.lastArgKey=void 0}get(e){const t=JSON.stringify(e);return this.lastArgKey!==t&&(this.lastArgKey=t,this.lastCache=this.fn(e)),this.lastCache}}class ve{constructor(e){this.executor=e,this._didRun=!1}get value(){if(!this._didRun)try{this._value=this.executor()}catch(e){this._error=e}finally{this._didRun=!0}if(this._error)throw this._error;return this._value}get rawValue(){return this._value}}var we;function Le(e){return e.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g,"\\$&")}function Ne(e){return e.split(/\r\n|\r|\n/)}function Se(e){for(let t=0,n=e.length;t=0;n--){const t=e.charCodeAt(n);if(32!==t&&9!==t)return n}return-1}function Re(e){return e>=65&&e<=90}function Ae(e){return 55296<=e&&e<=56319}function xe(e){return 56320<=e&&e<=57343}function Me(e,t){return t-56320+(e-55296<<10)+65536}function ke(e,t,n){const i=e.charCodeAt(n);if(Ae(i)&&n+1t[3*i+1]))return t[3*i+2];i=2*i+1}return 0}}function Pe(){return JSON.parse("[0,0,0,51229,51255,12,44061,44087,12,127462,127487,6,7083,7085,5,47645,47671,12,54813,54839,12,128678,128678,14,3270,3270,5,9919,9923,14,45853,45879,12,49437,49463,12,53021,53047,12,71216,71218,7,128398,128399,14,129360,129374,14,2519,2519,5,4448,4519,9,9742,9742,14,12336,12336,14,44957,44983,12,46749,46775,12,48541,48567,12,50333,50359,12,52125,52151,12,53917,53943,12,69888,69890,5,73018,73018,5,127990,127990,14,128558,128559,14,128759,128760,14,129653,129655,14,2027,2035,5,2891,2892,7,3761,3761,5,6683,6683,5,8293,8293,4,9825,9826,14,9999,9999,14,43452,43453,5,44509,44535,12,45405,45431,12,46301,46327,12,47197,47223,12,48093,48119,12,48989,49015,12,49885,49911,12,50781,50807,12,51677,51703,12,52573,52599,12,53469,53495,12,54365,54391,12,65279,65279,4,70471,70472,7,72145,72147,7,119173,119179,5,127799,127818,14,128240,128244,14,128512,128512,14,128652,128652,14,128721,128722,14,129292,129292,14,129445,129450,14,129734,129743,14,1476,1477,5,2366,2368,7,2750,2752,7,3076,3076,5,3415,3415,5,4141,4144,5,6109,6109,5,6964,6964,5,7394,7400,5,9197,9198,14,9770,9770,14,9877,9877,14,9968,9969,14,10084,10084,14,43052,43052,5,43713,43713,5,44285,44311,12,44733,44759,12,45181,45207,12,45629,45655,12,46077,46103,12,46525,46551,12,46973,46999,12,47421,47447,12,47869,47895,12,48317,48343,12,48765,48791,12,49213,49239,12,49661,49687,12,50109,50135,12,50557,50583,12,51005,51031,12,51453,51479,12,51901,51927,12,52349,52375,12,52797,52823,12,53245,53271,12,53693,53719,12,54141,54167,12,54589,54615,12,55037,55063,12,69506,69509,5,70191,70193,5,70841,70841,7,71463,71467,5,72330,72342,5,94031,94031,5,123628,123631,5,127763,127765,14,127941,127941,14,128043,128062,14,128302,128317,14,128465,128467,14,128539,128539,14,128640,128640,14,128662,128662,14,128703,128703,14,128745,128745,14,129004,129007,14,129329,129330,14,129402,129402,14,129483,129483,14,129686,129704,14,130048,131069,14,173,173,4,1757,1757,1,2200,2207,5,2434,2435,7,2631,2632,5,2817,2817,5,3008,3008,5,3201,3201,5,3387,3388,5,3542,3542,5,3902,3903,7,4190,4192,5,6002,6003,5,6439,6440,5,6765,6770,7,7019,7027,5,7154,7155,7,8205,8205,13,8505,8505,14,9654,9654,14,9757,9757,14,9792,9792,14,9852,9853,14,9890,9894,14,9937,9937,14,9981,9981,14,10035,10036,14,11035,11036,14,42654,42655,5,43346,43347,7,43587,43587,5,44006,44007,7,44173,44199,12,44397,44423,12,44621,44647,12,44845,44871,12,45069,45095,12,45293,45319,12,45517,45543,12,45741,45767,12,45965,45991,12,46189,46215,12,46413,46439,12,46637,46663,12,46861,46887,12,47085,47111,12,47309,47335,12,47533,47559,12,47757,47783,12,47981,48007,12,48205,48231,12,48429,48455,12,48653,48679,12,48877,48903,12,49101,49127,12,49325,49351,12,49549,49575,12,49773,49799,12,49997,50023,12,50221,50247,12,50445,50471,12,50669,50695,12,50893,50919,12,51117,51143,12,51341,51367,12,51565,51591,12,51789,51815,12,52013,52039,12,52237,52263,12,52461,52487,12,52685,52711,12,52909,52935,12,53133,53159,12,53357,53383,12,53581,53607,12,53805,53831,12,54029,54055,12,54253,54279,12,54477,54503,12,54701,54727,12,54925,54951,12,55149,55175,12,68101,68102,5,69762,69762,7,70067,70069,7,70371,70378,5,70720,70721,7,71087,71087,5,71341,71341,5,71995,71996,5,72249,72249,7,72850,72871,5,73109,73109,5,118576,118598,5,121505,121519,5,127245,127247,14,127568,127569,14,127777,127777,14,127872,127891,14,127956,127967,14,128015,128016,14,128110,128172,14,128259,128259,14,128367,128368,14,128424,128424,14,128488,128488,14,128530,128532,14,128550,128551,14,128566,128566,14,128647,128647,14,128656,128656,14,128667,128673,14,128691,128693,14,128715,128715,14,128728,128732,14,128752,128752,14,128765,128767,14,129096,129103,14,129311,129311,14,129344,129349,14,129394,129394,14,129413,129425,14,129466,129471,14,129511,129535,14,129664,129666,14,129719,129722,14,129760,129767,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2307,2307,7,2382,2383,7,2497,2500,5,2563,2563,7,2677,2677,5,2763,2764,7,2879,2879,5,2914,2915,5,3021,3021,5,3142,3144,5,3263,3263,5,3285,3286,5,3398,3400,7,3530,3530,5,3633,3633,5,3864,3865,5,3974,3975,5,4155,4156,7,4229,4230,5,5909,5909,7,6078,6085,7,6277,6278,5,6451,6456,7,6744,6750,5,6846,6846,5,6972,6972,5,7074,7077,5,7146,7148,7,7222,7223,5,7416,7417,5,8234,8238,4,8417,8417,5,9000,9000,14,9203,9203,14,9730,9731,14,9748,9749,14,9762,9763,14,9776,9783,14,9800,9811,14,9831,9831,14,9872,9873,14,9882,9882,14,9900,9903,14,9929,9933,14,9941,9960,14,9974,9974,14,9989,9989,14,10006,10006,14,10062,10062,14,10160,10160,14,11647,11647,5,12953,12953,14,43019,43019,5,43232,43249,5,43443,43443,5,43567,43568,7,43696,43696,5,43765,43765,7,44013,44013,5,44117,44143,12,44229,44255,12,44341,44367,12,44453,44479,12,44565,44591,12,44677,44703,12,44789,44815,12,44901,44927,12,45013,45039,12,45125,45151,12,45237,45263,12,45349,45375,12,45461,45487,12,45573,45599,12,45685,45711,12,45797,45823,12,45909,45935,12,46021,46047,12,46133,46159,12,46245,46271,12,46357,46383,12,46469,46495,12,46581,46607,12,46693,46719,12,46805,46831,12,46917,46943,12,47029,47055,12,47141,47167,12,47253,47279,12,47365,47391,12,47477,47503,12,47589,47615,12,47701,47727,12,47813,47839,12,47925,47951,12,48037,48063,12,48149,48175,12,48261,48287,12,48373,48399,12,48485,48511,12,48597,48623,12,48709,48735,12,48821,48847,12,48933,48959,12,49045,49071,12,49157,49183,12,49269,49295,12,49381,49407,12,49493,49519,12,49605,49631,12,49717,49743,12,49829,49855,12,49941,49967,12,50053,50079,12,50165,50191,12,50277,50303,12,50389,50415,12,50501,50527,12,50613,50639,12,50725,50751,12,50837,50863,12,50949,50975,12,51061,51087,12,51173,51199,12,51285,51311,12,51397,51423,12,51509,51535,12,51621,51647,12,51733,51759,12,51845,51871,12,51957,51983,12,52069,52095,12,52181,52207,12,52293,52319,12,52405,52431,12,52517,52543,12,52629,52655,12,52741,52767,12,52853,52879,12,52965,52991,12,53077,53103,12,53189,53215,12,53301,53327,12,53413,53439,12,53525,53551,12,53637,53663,12,53749,53775,12,53861,53887,12,53973,53999,12,54085,54111,12,54197,54223,12,54309,54335,12,54421,54447,12,54533,54559,12,54645,54671,12,54757,54783,12,54869,54895,12,54981,55007,12,55093,55119,12,55243,55291,10,66045,66045,5,68325,68326,5,69688,69702,5,69817,69818,5,69957,69958,7,70089,70092,5,70198,70199,5,70462,70462,5,70502,70508,5,70750,70750,5,70846,70846,7,71100,71101,5,71230,71230,7,71351,71351,5,71737,71738,5,72000,72000,7,72160,72160,5,72273,72278,5,72752,72758,5,72882,72883,5,73031,73031,5,73461,73462,7,94192,94193,7,119149,119149,7,121403,121452,5,122915,122916,5,126980,126980,14,127358,127359,14,127535,127535,14,127759,127759,14,127771,127771,14,127792,127793,14,127825,127867,14,127897,127899,14,127945,127945,14,127985,127986,14,128000,128007,14,128021,128021,14,128066,128100,14,128184,128235,14,128249,128252,14,128266,128276,14,128335,128335,14,128379,128390,14,128407,128419,14,128444,128444,14,128481,128481,14,128499,128499,14,128526,128526,14,128536,128536,14,128543,128543,14,128556,128556,14,128564,128564,14,128577,128580,14,128643,128645,14,128649,128649,14,128654,128654,14,128660,128660,14,128664,128664,14,128675,128675,14,128686,128689,14,128695,128696,14,128705,128709,14,128717,128719,14,128725,128725,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129009,129023,14,129160,129167,14,129296,129304,14,129320,129327,14,129340,129342,14,129356,129356,14,129388,129392,14,129399,129400,14,129404,129407,14,129432,129442,14,129454,129455,14,129473,129474,14,129485,129487,14,129648,129651,14,129659,129660,14,129671,129679,14,129709,129711,14,129728,129730,14,129751,129753,14,129776,129782,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2274,2274,1,2363,2363,7,2377,2380,7,2402,2403,5,2494,2494,5,2507,2508,7,2558,2558,5,2622,2624,7,2641,2641,5,2691,2691,7,2759,2760,5,2786,2787,5,2876,2876,5,2881,2884,5,2901,2902,5,3006,3006,5,3014,3016,7,3072,3072,5,3134,3136,5,3157,3158,5,3260,3260,5,3266,3266,5,3274,3275,7,3328,3329,5,3391,3392,7,3405,3405,5,3457,3457,5,3536,3537,7,3551,3551,5,3636,3642,5,3764,3772,5,3895,3895,5,3967,3967,7,3993,4028,5,4146,4151,5,4182,4183,7,4226,4226,5,4253,4253,5,4957,4959,5,5940,5940,7,6070,6070,7,6087,6088,7,6158,6158,4,6432,6434,5,6448,6449,7,6679,6680,5,6742,6742,5,6754,6754,5,6783,6783,5,6912,6915,5,6966,6970,5,6978,6978,5,7042,7042,7,7080,7081,5,7143,7143,7,7150,7150,7,7212,7219,5,7380,7392,5,7412,7412,5,8203,8203,4,8232,8232,4,8265,8265,14,8400,8412,5,8421,8432,5,8617,8618,14,9167,9167,14,9200,9200,14,9410,9410,14,9723,9726,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9774,14,9786,9786,14,9794,9794,14,9823,9823,14,9828,9828,14,9833,9850,14,9855,9855,14,9875,9875,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9935,9935,14,9939,9939,14,9962,9962,14,9972,9972,14,9978,9978,14,9986,9986,14,9997,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10133,10135,14,10548,10549,14,11093,11093,14,12330,12333,5,12441,12442,5,42608,42610,5,43010,43010,5,43045,43046,5,43188,43203,7,43302,43309,5,43392,43394,5,43446,43449,5,43493,43493,5,43571,43572,7,43597,43597,7,43703,43704,5,43756,43757,5,44003,44004,7,44009,44010,7,44033,44059,12,44089,44115,12,44145,44171,12,44201,44227,12,44257,44283,12,44313,44339,12,44369,44395,12,44425,44451,12,44481,44507,12,44537,44563,12,44593,44619,12,44649,44675,12,44705,44731,12,44761,44787,12,44817,44843,12,44873,44899,12,44929,44955,12,44985,45011,12,45041,45067,12,45097,45123,12,45153,45179,12,45209,45235,12,45265,45291,12,45321,45347,12,45377,45403,12,45433,45459,12,45489,45515,12,45545,45571,12,45601,45627,12,45657,45683,12,45713,45739,12,45769,45795,12,45825,45851,12,45881,45907,12,45937,45963,12,45993,46019,12,46049,46075,12,46105,46131,12,46161,46187,12,46217,46243,12,46273,46299,12,46329,46355,12,46385,46411,12,46441,46467,12,46497,46523,12,46553,46579,12,46609,46635,12,46665,46691,12,46721,46747,12,46777,46803,12,46833,46859,12,46889,46915,12,46945,46971,12,47001,47027,12,47057,47083,12,47113,47139,12,47169,47195,12,47225,47251,12,47281,47307,12,47337,47363,12,47393,47419,12,47449,47475,12,47505,47531,12,47561,47587,12,47617,47643,12,47673,47699,12,47729,47755,12,47785,47811,12,47841,47867,12,47897,47923,12,47953,47979,12,48009,48035,12,48065,48091,12,48121,48147,12,48177,48203,12,48233,48259,12,48289,48315,12,48345,48371,12,48401,48427,12,48457,48483,12,48513,48539,12,48569,48595,12,48625,48651,12,48681,48707,12,48737,48763,12,48793,48819,12,48849,48875,12,48905,48931,12,48961,48987,12,49017,49043,12,49073,49099,12,49129,49155,12,49185,49211,12,49241,49267,12,49297,49323,12,49353,49379,12,49409,49435,12,49465,49491,12,49521,49547,12,49577,49603,12,49633,49659,12,49689,49715,12,49745,49771,12,49801,49827,12,49857,49883,12,49913,49939,12,49969,49995,12,50025,50051,12,50081,50107,12,50137,50163,12,50193,50219,12,50249,50275,12,50305,50331,12,50361,50387,12,50417,50443,12,50473,50499,12,50529,50555,12,50585,50611,12,50641,50667,12,50697,50723,12,50753,50779,12,50809,50835,12,50865,50891,12,50921,50947,12,50977,51003,12,51033,51059,12,51089,51115,12,51145,51171,12,51201,51227,12,51257,51283,12,51313,51339,12,51369,51395,12,51425,51451,12,51481,51507,12,51537,51563,12,51593,51619,12,51649,51675,12,51705,51731,12,51761,51787,12,51817,51843,12,51873,51899,12,51929,51955,12,51985,52011,12,52041,52067,12,52097,52123,12,52153,52179,12,52209,52235,12,52265,52291,12,52321,52347,12,52377,52403,12,52433,52459,12,52489,52515,12,52545,52571,12,52601,52627,12,52657,52683,12,52713,52739,12,52769,52795,12,52825,52851,12,52881,52907,12,52937,52963,12,52993,53019,12,53049,53075,12,53105,53131,12,53161,53187,12,53217,53243,12,53273,53299,12,53329,53355,12,53385,53411,12,53441,53467,12,53497,53523,12,53553,53579,12,53609,53635,12,53665,53691,12,53721,53747,12,53777,53803,12,53833,53859,12,53889,53915,12,53945,53971,12,54001,54027,12,54057,54083,12,54113,54139,12,54169,54195,12,54225,54251,12,54281,54307,12,54337,54363,12,54393,54419,12,54449,54475,12,54505,54531,12,54561,54587,12,54617,54643,12,54673,54699,12,54729,54755,12,54785,54811,12,54841,54867,12,54897,54923,12,54953,54979,12,55009,55035,12,55065,55091,12,55121,55147,12,55177,55203,12,65024,65039,5,65520,65528,4,66422,66426,5,68152,68154,5,69291,69292,5,69633,69633,5,69747,69748,5,69811,69814,5,69826,69826,5,69932,69932,7,70016,70017,5,70079,70080,7,70095,70095,5,70196,70196,5,70367,70367,5,70402,70403,7,70464,70464,5,70487,70487,5,70709,70711,7,70725,70725,7,70833,70834,7,70843,70844,7,70849,70849,7,71090,71093,5,71103,71104,5,71227,71228,7,71339,71339,5,71344,71349,5,71458,71461,5,71727,71735,5,71985,71989,7,71998,71998,5,72002,72002,7,72154,72155,5,72193,72202,5,72251,72254,5,72281,72283,5,72344,72345,5,72766,72766,7,72874,72880,5,72885,72886,5,73023,73029,5,73104,73105,5,73111,73111,5,92912,92916,5,94095,94098,5,113824,113827,4,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,125252,125258,5,127183,127183,14,127340,127343,14,127377,127386,14,127491,127503,14,127548,127551,14,127744,127756,14,127761,127761,14,127769,127769,14,127773,127774,14,127780,127788,14,127796,127797,14,127820,127823,14,127869,127869,14,127894,127895,14,127902,127903,14,127943,127943,14,127947,127950,14,127972,127972,14,127988,127988,14,127992,127994,14,128009,128011,14,128019,128019,14,128023,128041,14,128064,128064,14,128102,128107,14,128174,128181,14,128238,128238,14,128246,128247,14,128254,128254,14,128264,128264,14,128278,128299,14,128329,128330,14,128348,128359,14,128371,128377,14,128392,128393,14,128401,128404,14,128421,128421,14,128433,128434,14,128450,128452,14,128476,128478,14,128483,128483,14,128495,128495,14,128506,128506,14,128519,128520,14,128528,128528,14,128534,128534,14,128538,128538,14,128540,128542,14,128544,128549,14,128552,128555,14,128557,128557,14,128560,128563,14,128565,128565,14,128567,128576,14,128581,128591,14,128641,128642,14,128646,128646,14,128648,128648,14,128650,128651,14,128653,128653,14,128655,128655,14,128657,128659,14,128661,128661,14,128663,128663,14,128665,128666,14,128674,128674,14,128676,128677,14,128679,128685,14,128690,128690,14,128694,128694,14,128697,128702,14,128704,128704,14,128710,128714,14,128716,128716,14,128720,128720,14,128723,128724,14,128726,128727,14,128733,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129008,129008,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129661,129663,14,129667,129670,14,129680,129685,14,129705,129708,14,129712,129718,14,129723,129727,14,129731,129733,14,129744,129750,14,129754,129759,14,129768,129775,14,129783,129791,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2192,2193,1,2250,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3132,3132,5,3137,3140,7,3146,3149,5,3170,3171,5,3202,3203,7,3262,3262,7,3264,3265,7,3267,3268,7,3271,3272,7,3276,3277,5,3298,3299,5,3330,3331,7,3390,3390,5,3393,3396,5,3402,3404,7,3406,3406,1,3426,3427,5,3458,3459,7,3535,3535,5,3538,3540,5,3544,3550,7,3570,3571,7,3635,3635,7,3655,3662,5,3763,3763,7,3784,3789,5,3893,3893,5,3897,3897,5,3953,3966,5,3968,3972,5,3981,3991,5,4038,4038,5,4145,4145,7,4153,4154,5,4157,4158,5,4184,4185,5,4209,4212,5,4228,4228,7,4237,4237,5,4352,4447,8,4520,4607,10,5906,5908,5,5938,5939,5,5970,5971,5,6068,6069,5,6071,6077,5,6086,6086,5,6089,6099,5,6155,6157,5,6159,6159,5,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6862,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7679,5,8204,8204,5,8206,8207,4,8233,8233,4,8252,8252,14,8288,8292,4,8294,8303,4,8413,8416,5,8418,8420,5,8482,8482,14,8596,8601,14,8986,8987,14,9096,9096,14,9193,9196,14,9199,9199,14,9201,9202,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9729,14,9732,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9775,9775,14,9784,9785,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9874,14,9876,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9934,14,9936,9936,14,9938,9938,14,9940,9940,14,9961,9961,14,9963,9967,14,9970,9971,14,9973,9973,14,9975,9977,14,9979,9980,14,9982,9985,14,9987,9988,14,9992,9996,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10083,14,10085,10087,14,10145,10145,14,10175,10175,14,11013,11015,14,11088,11088,14,11503,11505,5,11744,11775,5,12334,12335,5,12349,12349,14,12951,12951,14,42607,42607,5,42612,42621,5,42736,42737,5,43014,43014,5,43043,43044,7,43047,43047,7,43136,43137,7,43204,43205,5,43263,43263,5,43335,43345,5,43360,43388,8,43395,43395,7,43444,43445,7,43450,43451,7,43454,43456,7,43561,43566,5,43569,43570,5,43573,43574,5,43596,43596,5,43644,43644,5,43698,43700,5,43710,43711,5,43755,43755,7,43758,43759,7,43766,43766,5,44005,44005,5,44008,44008,5,44012,44012,7,44032,44032,11,44060,44060,11,44088,44088,11,44116,44116,11,44144,44144,11,44172,44172,11,44200,44200,11,44228,44228,11,44256,44256,11,44284,44284,11,44312,44312,11,44340,44340,11,44368,44368,11,44396,44396,11,44424,44424,11,44452,44452,11,44480,44480,11,44508,44508,11,44536,44536,11,44564,44564,11,44592,44592,11,44620,44620,11,44648,44648,11,44676,44676,11,44704,44704,11,44732,44732,11,44760,44760,11,44788,44788,11,44816,44816,11,44844,44844,11,44872,44872,11,44900,44900,11,44928,44928,11,44956,44956,11,44984,44984,11,45012,45012,11,45040,45040,11,45068,45068,11,45096,45096,11,45124,45124,11,45152,45152,11,45180,45180,11,45208,45208,11,45236,45236,11,45264,45264,11,45292,45292,11,45320,45320,11,45348,45348,11,45376,45376,11,45404,45404,11,45432,45432,11,45460,45460,11,45488,45488,11,45516,45516,11,45544,45544,11,45572,45572,11,45600,45600,11,45628,45628,11,45656,45656,11,45684,45684,11,45712,45712,11,45740,45740,11,45768,45768,11,45796,45796,11,45824,45824,11,45852,45852,11,45880,45880,11,45908,45908,11,45936,45936,11,45964,45964,11,45992,45992,11,46020,46020,11,46048,46048,11,46076,46076,11,46104,46104,11,46132,46132,11,46160,46160,11,46188,46188,11,46216,46216,11,46244,46244,11,46272,46272,11,46300,46300,11,46328,46328,11,46356,46356,11,46384,46384,11,46412,46412,11,46440,46440,11,46468,46468,11,46496,46496,11,46524,46524,11,46552,46552,11,46580,46580,11,46608,46608,11,46636,46636,11,46664,46664,11,46692,46692,11,46720,46720,11,46748,46748,11,46776,46776,11,46804,46804,11,46832,46832,11,46860,46860,11,46888,46888,11,46916,46916,11,46944,46944,11,46972,46972,11,47000,47000,11,47028,47028,11,47056,47056,11,47084,47084,11,47112,47112,11,47140,47140,11,47168,47168,11,47196,47196,11,47224,47224,11,47252,47252,11,47280,47280,11,47308,47308,11,47336,47336,11,47364,47364,11,47392,47392,11,47420,47420,11,47448,47448,11,47476,47476,11,47504,47504,11,47532,47532,11,47560,47560,11,47588,47588,11,47616,47616,11,47644,47644,11,47672,47672,11,47700,47700,11,47728,47728,11,47756,47756,11,47784,47784,11,47812,47812,11,47840,47840,11,47868,47868,11,47896,47896,11,47924,47924,11,47952,47952,11,47980,47980,11,48008,48008,11,48036,48036,11,48064,48064,11,48092,48092,11,48120,48120,11,48148,48148,11,48176,48176,11,48204,48204,11,48232,48232,11,48260,48260,11,48288,48288,11,48316,48316,11,48344,48344,11,48372,48372,11,48400,48400,11,48428,48428,11,48456,48456,11,48484,48484,11,48512,48512,11,48540,48540,11,48568,48568,11,48596,48596,11,48624,48624,11,48652,48652,11,48680,48680,11,48708,48708,11,48736,48736,11,48764,48764,11,48792,48792,11,48820,48820,11,48848,48848,11,48876,48876,11,48904,48904,11,48932,48932,11,48960,48960,11,48988,48988,11,49016,49016,11,49044,49044,11,49072,49072,11,49100,49100,11,49128,49128,11,49156,49156,11,49184,49184,11,49212,49212,11,49240,49240,11,49268,49268,11,49296,49296,11,49324,49324,11,49352,49352,11,49380,49380,11,49408,49408,11,49436,49436,11,49464,49464,11,49492,49492,11,49520,49520,11,49548,49548,11,49576,49576,11,49604,49604,11,49632,49632,11,49660,49660,11,49688,49688,11,49716,49716,11,49744,49744,11,49772,49772,11,49800,49800,11,49828,49828,11,49856,49856,11,49884,49884,11,49912,49912,11,49940,49940,11,49968,49968,11,49996,49996,11,50024,50024,11,50052,50052,11,50080,50080,11,50108,50108,11,50136,50136,11,50164,50164,11,50192,50192,11,50220,50220,11,50248,50248,11,50276,50276,11,50304,50304,11,50332,50332,11,50360,50360,11,50388,50388,11,50416,50416,11,50444,50444,11,50472,50472,11,50500,50500,11,50528,50528,11,50556,50556,11,50584,50584,11,50612,50612,11,50640,50640,11,50668,50668,11,50696,50696,11,50724,50724,11,50752,50752,11,50780,50780,11,50808,50808,11,50836,50836,11,50864,50864,11,50892,50892,11,50920,50920,11,50948,50948,11,50976,50976,11,51004,51004,11,51032,51032,11,51060,51060,11,51088,51088,11,51116,51116,11,51144,51144,11,51172,51172,11,51200,51200,11,51228,51228,11,51256,51256,11,51284,51284,11,51312,51312,11,51340,51340,11,51368,51368,11,51396,51396,11,51424,51424,11,51452,51452,11,51480,51480,11,51508,51508,11,51536,51536,11,51564,51564,11,51592,51592,11,51620,51620,11,51648,51648,11,51676,51676,11,51704,51704,11,51732,51732,11,51760,51760,11,51788,51788,11,51816,51816,11,51844,51844,11,51872,51872,11,51900,51900,11,51928,51928,11,51956,51956,11,51984,51984,11,52012,52012,11,52040,52040,11,52068,52068,11,52096,52096,11,52124,52124,11,52152,52152,11,52180,52180,11,52208,52208,11,52236,52236,11,52264,52264,11,52292,52292,11,52320,52320,11,52348,52348,11,52376,52376,11,52404,52404,11,52432,52432,11,52460,52460,11,52488,52488,11,52516,52516,11,52544,52544,11,52572,52572,11,52600,52600,11,52628,52628,11,52656,52656,11,52684,52684,11,52712,52712,11,52740,52740,11,52768,52768,11,52796,52796,11,52824,52824,11,52852,52852,11,52880,52880,11,52908,52908,11,52936,52936,11,52964,52964,11,52992,52992,11,53020,53020,11,53048,53048,11,53076,53076,11,53104,53104,11,53132,53132,11,53160,53160,11,53188,53188,11,53216,53216,11,53244,53244,11,53272,53272,11,53300,53300,11,53328,53328,11,53356,53356,11,53384,53384,11,53412,53412,11,53440,53440,11,53468,53468,11,53496,53496,11,53524,53524,11,53552,53552,11,53580,53580,11,53608,53608,11,53636,53636,11,53664,53664,11,53692,53692,11,53720,53720,11,53748,53748,11,53776,53776,11,53804,53804,11,53832,53832,11,53860,53860,11,53888,53888,11,53916,53916,11,53944,53944,11,53972,53972,11,54000,54000,11,54028,54028,11,54056,54056,11,54084,54084,11,54112,54112,11,54140,54140,11,54168,54168,11,54196,54196,11,54224,54224,11,54252,54252,11,54280,54280,11,54308,54308,11,54336,54336,11,54364,54364,11,54392,54392,11,54420,54420,11,54448,54448,11,54476,54476,11,54504,54504,11,54532,54532,11,54560,54560,11,54588,54588,11,54616,54616,11,54644,54644,11,54672,54672,11,54700,54700,11,54728,54728,11,54756,54756,11,54784,54784,11,54812,54812,11,54840,54840,11,54868,54868,11,54896,54896,11,54924,54924,11,54952,54952,11,54980,54980,11,55008,55008,11,55036,55036,11,55064,55064,11,55092,55092,11,55120,55120,11,55148,55148,11,55176,55176,11,55216,55238,9,64286,64286,5,65056,65071,5,65438,65439,5,65529,65531,4,66272,66272,5,68097,68099,5,68108,68111,5,68159,68159,5,68900,68903,5,69446,69456,5,69632,69632,7,69634,69634,7,69744,69744,5,69759,69761,5,69808,69810,7,69815,69816,7,69821,69821,1,69837,69837,1,69927,69931,5,69933,69940,5,70003,70003,5,70018,70018,7,70070,70078,5,70082,70083,1,70094,70094,7,70188,70190,7,70194,70195,7,70197,70197,7,70206,70206,5,70368,70370,7,70400,70401,5,70459,70460,5,70463,70463,7,70465,70468,7,70475,70477,7,70498,70499,7,70512,70516,5,70712,70719,5,70722,70724,5,70726,70726,5,70832,70832,5,70835,70840,5,70842,70842,5,70845,70845,5,70847,70848,5,70850,70851,5,71088,71089,7,71096,71099,7,71102,71102,7,71132,71133,5,71219,71226,5,71229,71229,5,71231,71232,5,71340,71340,7,71342,71343,7,71350,71350,7,71453,71455,5,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,118528,118573,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123566,123566,5,125136,125142,5,126976,126979,14,126981,127182,14,127184,127231,14,127279,127279,14,127344,127345,14,127374,127374,14,127405,127461,14,127489,127490,14,127514,127514,14,127538,127546,14,127561,127567,14,127570,127743,14,127757,127758,14,127760,127760,14,127762,127762,14,127766,127768,14,127770,127770,14,127772,127772,14,127775,127776,14,127778,127779,14,127789,127791,14,127794,127795,14,127798,127798,14,127819,127819,14,127824,127824,14,127868,127868,14,127870,127871,14,127892,127893,14,127896,127896,14,127900,127901,14,127904,127940,14,127942,127942,14,127944,127944,14,127946,127946,14,127951,127955,14,127968,127971,14,127973,127984,14,127987,127987,14,127989,127989,14,127991,127991,14,127995,127999,5,128008,128008,14,128012,128014,14,128017,128018,14,128020,128020,14,128022,128022,14,128042,128042,14,128063,128063,14,128065,128065,14,128101,128101,14,128108,128109,14,128173,128173,14,128182,128183,14,128236,128237,14,128239,128239,14,128245,128245,14,128248,128248,14,128253,128253,14,128255,128258,14,128260,128263,14,128265,128265,14,128277,128277,14,128300,128301,14,128326,128328,14,128331,128334,14,128336,128347,14,128360,128366,14,128369,128370,14,128378,128378,14,128391,128391,14,128394,128397,14,128400,128400,14,128405,128406,14,128420,128420,14,128422,128423,14,128425,128432,14,128435,128443,14,128445,128449,14,128453,128464,14,128468,128475,14,128479,128480,14,128482,128482,14,128484,128487,14,128489,128494,14,128496,128498,14,128500,128505,14,128507,128511,14,128513,128518,14,128521,128525,14,128527,128527,14,128529,128529,14,128533,128533,14,128535,128535,14,128537,128537,14]")}Ie._INSTANCE=null;class De{static getInstance(e){return De.cache.get(Array.from(e))}static getLocales(){return De._locales.value}constructor(e){this.confusableDictionary=e}isAmbiguous(e){return this.confusableDictionary.has(e)}getPrimaryConfusable(e){return this.confusableDictionary.get(e)}getConfusableCodePoints(){return new Set(this.confusableDictionary.keys())}}we=De,De.ambiguousCharacterData=new ve((()=>JSON.parse('{"_common":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,8218,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,8242,96,1370,96,1523,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71922,67,71913,67,65315,67,8557,67,8450,67,8493,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71919,87,71910,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,66293,90,71909,90,65338,90,8484,90,8488,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65297,49,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],"_default":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"cs":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"de":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"es":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"fr":[65374,126,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"it":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ja":[8211,45,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65292,44,65307,59],"ko":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pl":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pt-BR":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"qps-ploc":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ru":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"tr":[160,32,8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"zh-hans":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41],"zh-hant":[8211,45,65374,126,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65307,59]}'))),De.cache=new ye((e=>{function t(e){const t=new Map;for(let n=0;n!e.startsWith("_")&&e in r));0===o.length&&(o=["_default"]);for(const u of o){const e=t(r[u]);s=i(s,e)}const a=t(r["_common"]),l=n(a,s);return new De(l)})),De._locales=new ve((()=>Object.keys(De.ambiguousCharacterData.value).filter((e=>!e.startsWith("_")))));class Fe{static getRawData(){return JSON.parse("[9,10,11,12,13,32,127,160,173,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12288,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999]")}static getData(){return this._data||(this._data=new Set(Fe.getRawData())),this._data}static isInvisibleCharacter(e){return Fe.getData().has(e)}static get codePoints(){return Fe.getData()}}Fe._data=void 0;const Ke="$initialize";let Ve;class qe{constructor(e,t,n,i){this.vsWorker=e,this.req=t,this.method=n,this.args=i,this.type=0}}class Be{constructor(e,t,n,i){this.vsWorker=e,this.seq=t,this.res=n,this.err=i,this.type=1}}class Ue{constructor(e,t,n,i){this.vsWorker=e,this.req=t,this.eventName=n,this.arg=i,this.type=2}}class We{constructor(e,t,n){this.vsWorker=e,this.req=t,this.event=n,this.type=3}}class He{constructor(e,t){this.vsWorker=e,this.req=t,this.type=4}}class $e{constructor(e){this._workerId=-1,this._handler=e,this._lastSentReq=0,this._pendingReplies=Object.create(null),this._pendingEmitters=new Map,this._pendingEvents=new Map}setWorkerId(e){this._workerId=e}sendMessage(e,t){const n=String(++this._lastSentReq);return new Promise(((i,r)=>{this._pendingReplies[n]={resolve:i,reject:r},this._send(new qe(this._workerId,n,e,t))}))}listen(e,t){let n=null;const i=new K({onWillAddFirstListener:()=>{n=String(++this._lastSentReq),this._pendingEmitters.set(n,i),this._send(new Ue(this._workerId,n,e,t))},onDidRemoveLastListener:()=>{this._pendingEmitters.delete(n),this._send(new He(this._workerId,n)),n=null}});return i.event}handleMessage(e){e&&e.vsWorker&&(-1!==this._workerId&&e.vsWorker!==this._workerId||this._handleMessage(e))}_handleMessage(e){switch(e.type){case 1:return this._handleReplyMessage(e);case 0:return this._handleRequestMessage(e);case 2:return this._handleSubscribeEventMessage(e);case 3:return this._handleEventMessage(e);case 4:return this._handleUnsubscribeEventMessage(e)}}_handleReplyMessage(e){if(!this._pendingReplies[e.seq])return void console.warn("Got reply to unknown seq");const t=this._pendingReplies[e.seq];if(delete this._pendingReplies[e.seq],e.err){let n=e.err;return e.err.$isError&&(n=new Error,n.name=e.err.name,n.message=e.err.message,n.stack=e.err.stack),void t.reject(n)}t.resolve(e.res)}_handleRequestMessage(e){const t=e.req,n=this._handler.handleMessage(e.method,e.args);n.then((e=>{this._send(new Be(this._workerId,t,e,void 0))}),(e=>{e.detail instanceof Error&&(e.detail=r(e.detail)),this._send(new Be(this._workerId,t,void 0,r(e)))}))}_handleSubscribeEventMessage(e){const t=e.req,n=this._handler.handleEvent(e.eventName,e.arg)((e=>{this._send(new We(this._workerId,t,e))}));this._pendingEvents.set(t,n)}_handleEventMessage(e){this._pendingEmitters.has(e.req)?this._pendingEmitters.get(e.req).fire(e.event):console.warn("Got event for unknown req")}_handleUnsubscribeEventMessage(e){this._pendingEvents.has(e.req)?(this._pendingEvents.get(e.req).dispose(),this._pendingEvents.delete(e.req)):console.warn("Got unsubscribe for unknown req")}_send(e){const t=[];if(0===e.type)for(let n=0;nfunction(){const n=Array.prototype.slice.call(arguments,0);return t(e,n)},r=e=>function(t){return n(e,t)},s={};for(const o of e)je(o)?s[o]=r(o):ze(o)?s[o]=n(o,void 0):s[o]=i(o);return s}class Qe{constructor(e,t){this._requestHandlerFactory=t,this._requestHandler=null,this._protocol=new $e({sendMessage:(t,n)=>{e(t,n)},handleMessage:(e,t)=>this._handleMessage(e,t),handleEvent:(e,t)=>this._handleEvent(e,t)})}onmessage(e){this._protocol.handleMessage(e)}_handleMessage(e,t){if(e===Ke)return this.initialize(t[0],t[1],t[2],t[3]);if(!this._requestHandler||"function"!==typeof this._requestHandler[e])return Promise.reject(new Error("Missing requestHandler or method: "+e));try{return Promise.resolve(this._requestHandler[e].apply(this._requestHandler,t))}catch(xs){return Promise.reject(xs)}}_handleEvent(e,t){if(!this._requestHandler)throw new Error("Missing requestHandler");if(je(e)){const n=this._requestHandler[e].call(this._requestHandler,t);if("function"!==typeof n)throw new Error(`Missing dynamic event ${e} on request handler.`);return n}if(ze(e)){const t=this._requestHandler[e];if("function"!==typeof t)throw new Error(`Missing event ${e} on request handler.`);return t}throw new Error(`Malformed event name ${e}`)}initialize(e,t,n,i){this._protocol.setWorkerId(e);const r=(e,t)=>this._protocol.sendMessage(e,t),s=(e,t)=>this._protocol.listen(e,t),o=Ge(i,r,s);return this._requestHandlerFactory?(this._requestHandler=this._requestHandlerFactory(o),Promise.resolve(B(this._requestHandler))):(t&&("undefined"!==typeof t.baseUrl&&delete t["baseUrl"],"undefined"!==typeof t.paths&&"undefined"!==typeof t.paths.vs&&delete t.paths["vs"],void 0!==typeof t.trustedTypesPolicy&&delete t["trustedTypesPolicy"],t.catchError=!0,globalThis.require.config(t)),new Promise(((e,t)=>{const i=globalThis.require;i([n],(n=>{this._requestHandler=n.create(o),this._requestHandler?e(B(this._requestHandler)):t(new Error("No RequestHandler!"))}),t)})))}}class Ye{constructor(e,t,n,i){this.originalStart=e,this.originalLength=t,this.modifiedStart=n,this.modifiedLength=i}getOriginalEnd(){return this.originalStart+this.originalLength}getModifiedEnd(){return this.modifiedStart+this.modifiedLength}}function Je(e,t){return(t<<5)-t+e|0}function Xe(e,t){t=Je(149417,t);for(let n=0,i=e.length;n>>i)>>>0}function et(e,t=0,n=e.byteLength,i=0){for(let r=0;re.toString(16).padStart(2,"0"))).join(""):tt((e>>>0).toString(16),t/4)}class it{constructor(){this._h0=1732584193,this._h1=4023233417,this._h2=2562383102,this._h3=271733878,this._h4=3285377520,this._buff=new Uint8Array(67),this._buffDV=new DataView(this._buff.buffer),this._buffLen=0,this._totalLen=0,this._leftoverHighSurrogate=0,this._finished=!1}update(e){const t=e.length;if(0===t)return;const n=this._buff;let i,r,s=this._buffLen,o=this._leftoverHighSurrogate;0!==o?(i=o,r=-1,o=0):(i=e.charCodeAt(0),r=0);while(1){let a=i;if(Ae(i)){if(!(r+1>>6,e[t++]=128|(63&n)>>>0):n<65536?(e[t++]=224|(61440&n)>>>12,e[t++]=128|(4032&n)>>>6,e[t++]=128|(63&n)>>>0):(e[t++]=240|(1835008&n)>>>18,e[t++]=128|(258048&n)>>>12,e[t++]=128|(4032&n)>>>6,e[t++]=128|(63&n)>>>0),t>=64&&(this._step(),t-=64,this._totalLen+=64,e[0]=e[64],e[1]=e[65],e[2]=e[66]),t}digest(){return this._finished||(this._finished=!0,this._leftoverHighSurrogate&&(this._leftoverHighSurrogate=0,this._buffLen=this._push(this._buff,this._buffLen,65533)),this._totalLen+=this._buffLen,this._wrapUp()),nt(this._h0)+nt(this._h1)+nt(this._h2)+nt(this._h3)+nt(this._h4)}_wrapUp(){this._buff[this._buffLen++]=128,et(this._buff,this._buffLen),this._buffLen>56&&(this._step(),et(this._buff));const e=8*this._totalLen;this._buffDV.setUint32(56,Math.floor(e/4294967296),!1),this._buffDV.setUint32(60,e%4294967296,!1),this._step()}_step(){const e=it._bigBlock32,t=this._buffDV;for(let h=0;h<64;h+=4)e.setUint32(h,t.getUint32(h,!1),!1);for(let h=64;h<320;h+=4)e.setUint32(h,Ze(e.getUint32(h-12,!1)^e.getUint32(h-32,!1)^e.getUint32(h-56,!1)^e.getUint32(h-64,!1),1),!1);let n,i,r,s=this._h0,o=this._h1,a=this._h2,l=this._h3,u=this._h4;for(let h=0;h<80;h++)h<20?(n=o&a|~o&l,i=1518500249):h<40?(n=o^a^l,i=1859775393):h<60?(n=o&a|o&l|a&l,i=2400959708):(n=o^a^l,i=3395469782),r=Ze(s,5)+n+u+i+e.getUint32(4*h,!1)&4294967295,u=l,l=a,a=Ze(o,30),o=s,s=r;this._h0=this._h0+s&4294967295,this._h1=this._h1+o&4294967295,this._h2=this._h2+a&4294967295,this._h3=this._h3+l&4294967295,this._h4=this._h4+u&4294967295}}it._bigBlock32=new DataView(new ArrayBuffer(320));class rt{constructor(e){this.source=e}getElements(){const e=this.source,t=new Int32Array(e.length);for(let n=0,i=e.length;n0||this.m_modifiedCount>0)&&this.m_changes.push(new Ye(this.m_originalStart,this.m_originalCount,this.m_modifiedStart,this.m_modifiedCount)),this.m_originalCount=0,this.m_modifiedCount=0,this.m_originalStart=1073741824,this.m_modifiedStart=1073741824}AddOriginalElement(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_originalCount++}AddModifiedElement(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_modifiedCount++}getChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes}getReverseChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes.reverse(),this.m_changes}}class ut{constructor(e,t,n=null){this.ContinueProcessingPredicate=n,this._originalSequence=e,this._modifiedSequence=t;const[i,r,s]=ut._getElements(e),[o,a,l]=ut._getElements(t);this._hasStrings=s&&l,this._originalStringElements=i,this._originalElementsOrHash=r,this._modifiedStringElements=o,this._modifiedElementsOrHash=a,this.m_forwardHistory=[],this.m_reverseHistory=[]}static _isStringArray(e){return e.length>0&&"string"===typeof e[0]}static _getElements(e){const t=e.getElements();if(ut._isStringArray(t)){const e=new Int32Array(t.length);for(let n=0,i=t.length;n=e&&i>=n&&this.ElementsAreEqual(t,i))t--,i--;if(e>t||n>i){let r;return n<=i?(ot.Assert(e===t+1,"originalStart should only be one more than originalEnd"),r=[new Ye(e,0,n,i-n+1)]):e<=t?(ot.Assert(n===i+1,"modifiedStart should only be one more than modifiedEnd"),r=[new Ye(e,t-e+1,n,0)]):(ot.Assert(e===t+1,"originalStart should only be one more than originalEnd"),ot.Assert(n===i+1,"modifiedStart should only be one more than modifiedEnd"),r=[]),r}const s=[0],o=[0],a=this.ComputeRecursionPoint(e,t,n,i,s,o,r),l=s[0],u=o[0];if(null!==a)return a;if(!r[0]){const s=this.ComputeDiffRecursive(e,l,n,u,r);let o=[];return o=r[0]?[new Ye(l+1,t-(l+1)+1,u+1,i-(u+1)+1)]:this.ComputeDiffRecursive(l+1,t,u+1,i,r),this.ConcatenateChanges(s,o)}return[new Ye(e,t-e+1,n,i-n+1)]}WALKTRACE(e,t,n,i,r,s,o,a,l,u,h,c,d,g,m,f,p,b){let _=null,C=null,y=new lt,v=t,w=n,L=d[0]-f[0]-i,N=-1073741824,S=this.m_forwardHistory.length-1;do{const t=L+e;t===v||t=0&&(l=this.m_forwardHistory[S],e=l[0],v=1,w=l.length-1)}while(--S>=-1);if(_=y.getReverseChanges(),b[0]){let e=d[0]+1,t=f[0]+1;if(null!==_&&_.length>0){const n=_[_.length-1];e=Math.max(e,n.getOriginalEnd()),t=Math.max(t,n.getModifiedEnd())}C=[new Ye(e,c-e+1,t,m-t+1)]}else{y=new lt,v=s,w=o,L=d[0]-f[0]-a,N=1073741824,S=p?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{const e=L+r;e===v||e=u[e+1]?(h=u[e+1]-1,g=h-L-a,h>N&&y.MarkNextChange(),N=h+1,y.AddOriginalElement(h+1,g+1),L=e+1-r):(h=u[e-1],g=h-L-a,h>N&&y.MarkNextChange(),N=h,y.AddModifiedElement(h+1,g+1),L=e-1-r),S>=0&&(u=this.m_reverseHistory[S],r=u[0],v=1,w=u.length-1)}while(--S>=-1);C=y.getChanges()}return this.ConcatenateChanges(_,C)}ComputeRecursionPoint(e,t,n,i,r,s,o){let a=0,l=0,u=0,h=0,c=0,d=0;e--,n--,r[0]=0,s[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];const g=t-e+(i-n),m=g+1,f=new Int32Array(m),p=new Int32Array(m),b=i-n,_=t-e,C=e-n,y=t-i,v=_-b,w=v%2===0;f[b]=e,p[_]=t,o[0]=!1;for(let L=1;L<=g/2+1;L++){let g=0,v=0;u=this.ClipDiagonalBound(b-L,L,b,m),h=this.ClipDiagonalBound(b+L,L,b,m);for(let e=u;e<=h;e+=2){a=e===u||eg+v&&(g=a,v=l),!w&&Math.abs(e-_)<=L-1&&a>=p[e])return r[0]=a,s[0]=l,n<=p[e]&&L<=1448?this.WALKTRACE(b,u,h,C,_,c,d,y,f,p,a,t,r,l,i,s,w,o):null}const N=(g-e+(v-n)-L)/2;if(null!==this.ContinueProcessingPredicate&&!this.ContinueProcessingPredicate(g,N))return o[0]=!0,r[0]=g,s[0]=v,N>0&&L<=1448?this.WALKTRACE(b,u,h,C,_,c,d,y,f,p,a,t,r,l,i,s,w,o):(e++,n++,[new Ye(e,t-e+1,n,i-n+1)]);c=this.ClipDiagonalBound(_-L,L,_,m),d=this.ClipDiagonalBound(_+L,L,_,m);for(let m=c;m<=d;m+=2){a=m===c||m=p[m+1]?p[m+1]-1:p[m-1],l=a-(m-_)-y;const g=a;while(a>e&&l>n&&this.ElementsAreEqual(a,l))a--,l--;if(p[m]=a,w&&Math.abs(m-b)<=L&&a<=f[m])return r[0]=a,s[0]=l,g>=f[m]&&L<=1448?this.WALKTRACE(b,u,h,C,_,c,d,y,f,p,a,t,r,l,i,s,w,o):null}if(L<=1447){let e=new Int32Array(h-u+2);e[0]=b-u+1,at.Copy2(f,u,e,1,h-u+1),this.m_forwardHistory.push(e),e=new Int32Array(d-c+2),e[0]=_-c+1,at.Copy2(p,c,e,1,d-c+1),this.m_reverseHistory.push(e)}}return this.WALKTRACE(b,u,h,C,_,c,d,y,f,p,a,t,r,l,i,s,w,o)}PrettifyChanges(e){for(let t=0;t0,o=n.modifiedLength>0;while(n.originalStart+n.originalLength=0;t--){const n=e[t];let i=0,r=0;if(t>0){const n=e[t-1];i=n.originalStart+n.originalLength,r=n.modifiedStart+n.modifiedLength}const s=n.originalLength>0,o=n.modifiedLength>0;let a=0,l=this._boundaryScore(n.originalStart,n.originalLength,n.modifiedStart,n.modifiedLength);for(let e=1;;e++){const t=n.originalStart-e,u=n.modifiedStart-e;if(tl&&(l=c,a=e)}n.originalStart-=a,n.modifiedStart-=a;const u=[null];t>0&&this.ChangesOverlap(e[t-1],e[t],u)&&(e[t-1]=u[0],e.splice(t,1),t++)}if(this._hasStrings)for(let t=1,n=e.length;t0&&t>a&&(a=t,l=h,u=e)}return a>0?[l,u]:null}_contiguousSequenceScore(e,t,n){let i=0;for(let r=0;r=this._originalElementsOrHash.length-1||this._hasStrings&&/^\s*$/.test(this._originalStringElements[e])}_OriginalRegionIsBoundary(e,t){if(this._OriginalIsBoundary(e)||this._OriginalIsBoundary(e-1))return!0;if(t>0){const n=e+t;if(this._OriginalIsBoundary(n-1)||this._OriginalIsBoundary(n))return!0}return!1}_ModifiedIsBoundary(e){return e<=0||e>=this._modifiedElementsOrHash.length-1||this._hasStrings&&/^\s*$/.test(this._modifiedStringElements[e])}_ModifiedRegionIsBoundary(e,t){if(this._ModifiedIsBoundary(e)||this._ModifiedIsBoundary(e-1))return!0;if(t>0){const n=e+t;if(this._ModifiedIsBoundary(n-1)||this._ModifiedIsBoundary(n))return!0}return!1}_boundaryScore(e,t,n,i){const r=this._OriginalRegionIsBoundary(e,t)?1:0,s=this._ModifiedRegionIsBoundary(n,i)?1:0;return r+s}ConcatenateChanges(e,t){const n=[];if(0===e.length||0===t.length)return t.length>0?t:e;if(this.ChangesOverlap(e[e.length-1],t[0],n)){const i=new Array(e.length+t.length-1);return at.Copy(e,0,i,0,e.length-1),i[e.length-1]=n[0],at.Copy(t,1,i,e.length,t.length-1),i}{const n=new Array(e.length+t.length);return at.Copy(e,0,n,0,e.length),at.Copy(t,0,n,e.length,t.length),n}}ChangesOverlap(e,t,n){if(ot.Assert(e.originalStart<=t.originalStart,"Left change is not less than or equal to right change"),ot.Assert(e.modifiedStart<=t.modifiedStart,"Left change is not less than or equal to right change"),e.originalStart+e.originalLength>=t.originalStart||e.modifiedStart+e.modifiedLength>=t.modifiedStart){const i=e.originalStart;let r=e.originalLength;const s=e.modifiedStart;let o=e.modifiedLength;return e.originalStart+e.originalLength>=t.originalStart&&(r=t.originalStart+t.originalLength-e.originalStart),e.modifiedStart+e.modifiedLength>=t.modifiedStart&&(o=t.modifiedStart+t.modifiedLength-e.modifiedStart),n[0]=new Ye(i,r,s,o),!0}return n[0]=null,!1}ClipDiagonalBound(e,t,n,i){if(e>=0&&e=gt&&e<=ft||e>=mt&&e<=pt}function xt(e,t,n,i){let r="",s=0,o=-1,a=0,l=0;for(let u=0;u<=e.length;++u){if(u2){const e=r.lastIndexOf(n);-1===e?(r="",s=0):(r=r.slice(0,e),s=r.length-1-r.lastIndexOf(n)),o=u,a=0;continue}if(0!==r.length){r="",s=0,o=u,a=0;continue}}t&&(r+=r.length>0?`${n}..`:"..",s=2)}else r.length>0?r+=`${n}${e.slice(o+1,u)}`:r=e.slice(o+1,u),s=u-o-1;o=u,a=0}else l===bt&&-1!==a?++a:a=-1}return r}function Mt(e,t){Lt(t,"pathObject");const n=t.dir||t.root,i=t.base||`${t.name||""}${t.ext||""}`;return n?n===t.root?`${n}${i}`:`${n}${e}${i}`:i}const kt={resolve(...e){let t="",n="",i=!1;for(let r=e.length-1;r>=-1;r--){let s;if(r>=0){if(s=e[r],Nt(s,"path"),0===s.length)continue}else 0===t.length?s=ht():(s=ct[`=${t}`]||ht(),(void 0===s||s.slice(0,2).toLowerCase()!==t.toLowerCase()&&s.charCodeAt(2)===Ct)&&(s=`${t}\\`));const o=s.length;let a=0,l="",u=!1;const h=s.charCodeAt(0);if(1===o)Et(h)&&(a=1,u=!0);else if(Et(h))if(u=!0,Et(s.charCodeAt(1))){let e=2,t=e;while(e2&&Et(s.charCodeAt(2))&&(u=!0,a=3));if(l.length>0)if(t.length>0){if(l.toLowerCase()!==t.toLowerCase())continue}else t=l;if(i){if(t.length>0)break}else if(n=`${s.slice(a)}\\${n}`,i=u,u&&t.length>0)break}return n=xt(n,!i,"\\",Et),i?`${t}\\${n}`:`${t}${n}`||"."},normalize(e){Nt(e,"path");const t=e.length;if(0===t)return".";let n,i=0,r=!1;const s=e.charCodeAt(0);if(1===t)return Rt(s)?"\\":e;if(Et(s))if(r=!0,Et(e.charCodeAt(1))){let r=2,s=r;while(r2&&Et(e.charCodeAt(2))&&(r=!0,i=3));let o=i0&&Et(e.charCodeAt(t-1))&&(o+="\\"),void 0===n?r?`\\${o}`:o:r?`${n}\\${o}`:`${n}${o}`},isAbsolute(e){Nt(e,"path");const t=e.length;if(0===t)return!1;const n=e.charCodeAt(0);return Et(n)||t>2&&At(n)&&e.charCodeAt(1)===yt&&Et(e.charCodeAt(2))},join(...e){if(0===e.length)return".";let t,n;for(let s=0;s0&&(void 0===t?t=n=i:t+=`\\${i}`)}if(void 0===t)return".";let i=!0,r=0;if("string"===typeof n&&Et(n.charCodeAt(0))){++r;const e=n.length;e>1&&Et(n.charCodeAt(1))&&(++r,e>2&&(Et(n.charCodeAt(2))?++r:i=!1))}if(i){while(r=2&&(t=`\\${t.slice(r)}`)}return kt.normalize(t)},relative(e,t){if(Nt(e,"from"),Nt(t,"to"),e===t)return"";const n=kt.resolve(e),i=kt.resolve(t);if(n===i)return"";if(e=n.toLowerCase(),t=i.toLowerCase(),e===t)return"";let r=0;while(rr&&e.charCodeAt(s-1)===Ct)s--;const o=s-r;let a=0;while(aa&&t.charCodeAt(l-1)===Ct)l--;const u=l-a,h=oh){if(t.charCodeAt(a+d)===Ct)return i.slice(a+d+1);if(2===d)return i.slice(a+d)}o>h&&(e.charCodeAt(r+d)===Ct?c=d:2===d&&(c=3)),-1===c&&(c=0)}let g="";for(d=r+c+1;d<=s;++d)d!==s&&e.charCodeAt(d)!==Ct||(g+=0===g.length?"..":"\\..");return a+=c,g.length>0?`${g}${i.slice(a,l)}`:(i.charCodeAt(a)===Ct&&++a,i.slice(a,l))},toNamespacedPath(e){if("string"!==typeof e||0===e.length)return e;const t=kt.resolve(e);if(t.length<=2)return e;if(t.charCodeAt(0)===Ct){if(t.charCodeAt(1)===Ct){const e=t.charCodeAt(2);if(e!==vt&&e!==bt)return`\\\\?\\UNC\\${t.slice(2)}`}}else if(At(t.charCodeAt(0))&&t.charCodeAt(1)===yt&&t.charCodeAt(2)===Ct)return`\\\\?\\${t}`;return e},dirname(e){Nt(e,"path");const t=e.length;if(0===t)return".";let n=-1,i=0;const r=e.charCodeAt(0);if(1===t)return Et(r)?e:".";if(Et(r)){if(n=i=1,Et(e.charCodeAt(1))){let r=2,s=r;while(r2&&Et(e.charCodeAt(2))?3:2,i=n);let s=-1,o=!0;for(let a=t-1;a>=i;--a)if(Et(e.charCodeAt(a))){if(!o){s=a;break}}else o=!1;if(-1===s){if(-1===n)return".";s=n}return e.slice(0,s)},basename(e,t){void 0!==t&&Nt(t,"ext"),Nt(e,"path");let n,i=0,r=-1,s=!0;if(e.length>=2&&At(e.charCodeAt(0))&&e.charCodeAt(1)===yt&&(i=2),void 0!==t&&t.length>0&&t.length<=e.length){if(t===e)return"";let o=t.length-1,a=-1;for(n=e.length-1;n>=i;--n){const l=e.charCodeAt(n);if(Et(l)){if(!s){i=n+1;break}}else-1===a&&(s=!1,a=n+1),o>=0&&(l===t.charCodeAt(o)?-1===--o&&(r=n):(o=-1,r=a))}return i===r?r=a:-1===r&&(r=e.length),e.slice(i,r)}for(n=e.length-1;n>=i;--n)if(Et(e.charCodeAt(n))){if(!s){i=n+1;break}}else-1===r&&(s=!1,r=n+1);return-1===r?"":e.slice(i,r)},extname(e){Nt(e,"path");let t=0,n=-1,i=0,r=-1,s=!0,o=0;e.length>=2&&e.charCodeAt(1)===yt&&At(e.charCodeAt(0))&&(t=i=2);for(let a=e.length-1;a>=t;--a){const t=e.charCodeAt(a);if(Et(t)){if(!s){i=a+1;break}}else-1===r&&(s=!1,r=a+1),t===bt?-1===n?n=a:1!==o&&(o=1):-1!==n&&(o=-1)}return-1===n||-1===r||0===o||1===o&&n===r-1&&n===i+1?"":e.slice(n,r)},format:Mt.bind(null,"\\"),parse(e){Nt(e,"path");const t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;const n=e.length;let i=0,r=e.charCodeAt(0);if(1===n)return Et(r)?(t.root=t.dir=e,t):(t.base=t.name=e,t);if(Et(r)){if(i=1,Et(e.charCodeAt(1))){let t=2,r=t;while(t0&&(t.root=e.slice(0,i));let s=-1,o=i,a=-1,l=!0,u=e.length-1,h=0;for(;u>=i;--u)if(r=e.charCodeAt(u),Et(r)){if(!l){o=u+1;break}}else-1===a&&(l=!1,a=u+1),r===bt?-1===s?s=u:1!==h&&(h=1):-1!==s&&(h=-1);return-1!==a&&(-1===s||0===h||1===h&&s===a-1&&s===o+1?t.base=t.name=e.slice(o,a):(t.name=e.slice(o,s),t.base=e.slice(o,a),t.ext=e.slice(s,a))),t.dir=o>0&&o!==i?e.slice(0,o-1):t.root,t},sep:"\\",delimiter:";",win32:null,posix:null},Ot=(()=>{if(St){const e=/\\/g;return()=>{const t=ht().replace(e,"/");return t.slice(t.indexOf("/"))}}return()=>ht()})(),Tt={resolve(...e){let t="",n=!1;for(let i=e.length-1;i>=-1&&!n;i--){const r=i>=0?e[i]:Ot();Nt(r,"path"),0!==r.length&&(t=`${r}/${t}`,n=r.charCodeAt(0)===_t)}return t=xt(t,!n,"/",Rt),n?`/${t}`:t.length>0?t:"."},normalize(e){if(Nt(e,"path"),0===e.length)return".";const t=e.charCodeAt(0)===_t,n=e.charCodeAt(e.length-1)===_t;return e=xt(e,!t,"/",Rt),0===e.length?t?"/":n?"./":".":(n&&(e+="/"),t?`/${e}`:e)},isAbsolute(e){return Nt(e,"path"),e.length>0&&e.charCodeAt(0)===_t},join(...e){if(0===e.length)return".";let t;for(let n=0;n0&&(void 0===t?t=i:t+=`/${i}`)}return void 0===t?".":Tt.normalize(t)},relative(e,t){if(Nt(e,"from"),Nt(t,"to"),e===t)return"";if(e=Tt.resolve(e),t=Tt.resolve(t),e===t)return"";const n=1,i=e.length,r=i-n,s=1,o=t.length-s,a=ra){if(t.charCodeAt(s+u)===_t)return t.slice(s+u+1);if(0===u)return t.slice(s+u)}else r>a&&(e.charCodeAt(n+u)===_t?l=u:0===u&&(l=0));let h="";for(u=n+l+1;u<=i;++u)u!==i&&e.charCodeAt(u)!==_t||(h+=0===h.length?"..":"/..");return`${h}${t.slice(s+l)}`},toNamespacedPath(e){return e},dirname(e){if(Nt(e,"path"),0===e.length)return".";const t=e.charCodeAt(0)===_t;let n=-1,i=!0;for(let r=e.length-1;r>=1;--r)if(e.charCodeAt(r)===_t){if(!i){n=r;break}}else i=!1;return-1===n?t?"/":".":t&&1===n?"//":e.slice(0,n)},basename(e,t){void 0!==t&&Nt(t,"ext"),Nt(e,"path");let n,i=0,r=-1,s=!0;if(void 0!==t&&t.length>0&&t.length<=e.length){if(t===e)return"";let o=t.length-1,a=-1;for(n=e.length-1;n>=0;--n){const l=e.charCodeAt(n);if(l===_t){if(!s){i=n+1;break}}else-1===a&&(s=!1,a=n+1),o>=0&&(l===t.charCodeAt(o)?-1===--o&&(r=n):(o=-1,r=a))}return i===r?r=a:-1===r&&(r=e.length),e.slice(i,r)}for(n=e.length-1;n>=0;--n)if(e.charCodeAt(n)===_t){if(!s){i=n+1;break}}else-1===r&&(s=!1,r=n+1);return-1===r?"":e.slice(i,r)},extname(e){Nt(e,"path");let t=-1,n=0,i=-1,r=!0,s=0;for(let o=e.length-1;o>=0;--o){const a=e.charCodeAt(o);if(a!==_t)-1===i&&(r=!1,i=o+1),a===bt?-1===t?t=o:1!==s&&(s=1):-1!==t&&(s=-1);else if(!r){n=o+1;break}}return-1===t||-1===i||0===s||1===s&&t===i-1&&t===n+1?"":e.slice(t,i)},format:Mt.bind(null,"/"),parse(e){Nt(e,"path");const t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;const n=e.charCodeAt(0)===_t;let i;n?(t.root="/",i=1):i=0;let r=-1,s=0,o=-1,a=!0,l=e.length-1,u=0;for(;l>=i;--l){const t=e.charCodeAt(l);if(t!==_t)-1===o&&(a=!1,o=l+1),t===bt?-1===r?r=l:1!==u&&(u=1):-1!==r&&(u=-1);else if(!a){s=l+1;break}}if(-1!==o){const i=0===s&&n?1:s;-1===r||0===u||1===u&&r===o-1&&r===s+1?t.base=t.name=e.slice(i,o):(t.name=e.slice(i,r),t.base=e.slice(i,o),t.ext=e.slice(r,o))}return s>0?t.dir=e.slice(0,s-1):n&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};Tt.win32=kt.win32=kt,Tt.posix=kt.posix=Tt;St?kt.normalize:Tt.normalize,St?kt.resolve:Tt.resolve,St?kt.relative:Tt.relative,St?kt.dirname:Tt.dirname,St?kt.basename:Tt.basename,St?kt.extname:Tt.extname,St?kt.sep:Tt.sep;const It=/^\w[\w\d+.-]*$/,Pt=/^\//,Dt=/^\/\//;function Ft(e,t){if(!e.scheme&&t)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${e.authority}", path: "${e.path}", query: "${e.query}", fragment: "${e.fragment}"}`);if(e.scheme&&!It.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!Pt.test(e.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(Dt.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}function Kt(e,t){return e||t?e:"file"}function Vt(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==Bt&&(t=Bt+t):t=Bt;break}return t}const qt="",Bt="/",Ut=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class Wt{static isUri(e){return e instanceof Wt||!!e&&("string"===typeof e.authority&&"string"===typeof e.fragment&&"string"===typeof e.path&&"string"===typeof e.query&&"string"===typeof e.scheme&&"string"===typeof e.fsPath&&"function"===typeof e.with&&"function"===typeof e.toString)}constructor(e,t,n,i,r,s=!1){"object"===typeof e?(this.scheme=e.scheme||qt,this.authority=e.authority||qt,this.path=e.path||qt,this.query=e.query||qt,this.fragment=e.fragment||qt):(this.scheme=Kt(e,s),this.authority=t||qt,this.path=Vt(this.scheme,n||qt),this.query=i||qt,this.fragment=r||qt,Ft(this,s))}get fsPath(){return Qt(this,!1)}with(e){if(!e)return this;let{scheme:t,authority:n,path:i,query:r,fragment:s}=e;return void 0===t?t=this.scheme:null===t&&(t=qt),void 0===n?n=this.authority:null===n&&(n=qt),void 0===i?i=this.path:null===i&&(i=qt),void 0===r?r=this.query:null===r&&(r=qt),void 0===s?s=this.fragment:null===s&&(s=qt),t===this.scheme&&n===this.authority&&i===this.path&&r===this.query&&s===this.fragment?this:new $t(t,n,i,r,s)}static parse(e,t=!1){const n=Ut.exec(e);return n?new $t(n[2]||qt,Zt(n[4]||qt),Zt(n[5]||qt),Zt(n[7]||qt),Zt(n[9]||qt),t):new $t(qt,qt,qt,qt,qt)}static file(e){let t=qt;if(fe&&(e=e.replace(/\\/g,Bt)),e[0]===Bt&&e[1]===Bt){const n=e.indexOf(Bt,2);-1===n?(t=e.substring(2),e=Bt):(t=e.substring(2,n),e=e.substring(n)||Bt)}return new $t("file",t,e,qt,qt)}static from(e,t){const n=new $t(e.scheme,e.authority,e.path,e.query,e.fragment,t);return n}static joinPath(e,...t){if(!e.path)throw new Error("[UriError]: cannot call joinPath on URI without path");let n;return n=fe&&"file"===e.scheme?Wt.file(kt.join(Qt(e,!0),...t)).path:Tt.join(e.path,...t),e.with({path:n})}toString(e=!1){return Yt(this,e)}toJSON(){return this}static revive(e){var t,n;if(e){if(e instanceof Wt)return e;{const i=new $t(e);return i._formatted=null!==(t=e.external)&&void 0!==t?t:null,i._fsPath=e._sep===Ht&&null!==(n=e.fsPath)&&void 0!==n?n:null,i}}return e}}const Ht=fe?1:void 0;class $t extends Wt{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||(this._fsPath=Qt(this,!1)),this._fsPath}toString(e=!1){return e?Yt(this,!0):(this._formatted||(this._formatted=Yt(this,!1)),this._formatted)}toJSON(){const e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=Ht),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}}const zt={[58]:"%3A",[47]:"%2F",[63]:"%3F",[35]:"%23",[91]:"%5B",[93]:"%5D",[64]:"%40",[33]:"%21",[36]:"%24",[38]:"%26",[39]:"%27",[40]:"%28",[41]:"%29",[42]:"%2A",[43]:"%2B",[44]:"%2C",[59]:"%3B",[61]:"%3D",[32]:"%20"};function jt(e,t,n){let i,r=-1;for(let s=0;s=97&&o<=122||o>=65&&o<=90||o>=48&&o<=57||45===o||46===o||95===o||126===o||t&&47===o||n&&91===o||n&&93===o||n&&58===o)-1!==r&&(i+=encodeURIComponent(e.substring(r,s)),r=-1),void 0!==i&&(i+=e.charAt(s));else{void 0===i&&(i=e.substr(0,s));const t=zt[o];void 0!==t?(-1!==r&&(i+=encodeURIComponent(e.substring(r,s)),r=-1),i+=t):-1===r&&(r=s)}}return-1!==r&&(i+=encodeURIComponent(e.substring(r))),void 0!==i?i:e}function Gt(e){let t;for(let n=0;n1&&"file"===e.scheme?`//${e.authority}${e.path}`:47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&58===e.path.charCodeAt(2)?t?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,fe&&(n=n.replace(/\//g,"\\")),n}function Yt(e,t){const n=t?Gt:jt;let i="",{scheme:r,authority:s,path:o,query:a,fragment:l}=e;if(r&&(i+=r,i+=":"),(s||"file"===r)&&(i+=Bt,i+=Bt),s){let e=s.indexOf("@");if(-1!==e){const t=s.substr(0,e);s=s.substr(e+1),e=t.lastIndexOf(":"),-1===e?i+=n(t,!1,!1):(i+=n(t.substr(0,e),!1,!1),i+=":",i+=n(t.substr(e+1),!1,!0)),i+="@"}s=s.toLowerCase(),e=s.lastIndexOf(":"),-1===e?i+=n(s,!1,!0):(i+=n(s.substr(0,e),!1,!0),i+=s.substr(e))}if(o){if(o.length>=3&&47===o.charCodeAt(0)&&58===o.charCodeAt(2)){const e=o.charCodeAt(1);e>=65&&e<=90&&(o=`/${String.fromCharCode(e+32)}:${o.substr(3)}`)}else if(o.length>=2&&58===o.charCodeAt(1)){const e=o.charCodeAt(0);e>=65&&e<=90&&(o=`${String.fromCharCode(e+32)}:${o.substr(2)}`)}i+=n(o,!0,!1)}return a&&(i+="?",i+=n(a,!1,!1)),l&&(i+="#",i+=t?l:jt(l,!1,!1)),i}function Jt(e){try{return decodeURIComponent(e)}catch(j){return e.length>3?e.substr(0,3)+Jt(e.substr(3)):e}}const Xt=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function Zt(e){return e.match(Xt)?e.replace(Xt,(e=>Jt(e))):e}class en{constructor(e,t){this.lineNumber=e,this.column=t}with(e=this.lineNumber,t=this.column){return e===this.lineNumber&&t===this.column?this:new en(e,t)}delta(e=0,t=0){return this.with(this.lineNumber+e,this.column+t)}equals(e){return en.equals(this,e)}static equals(e,t){return!e&&!t||!!e&&!!t&&e.lineNumber===t.lineNumber&&e.column===t.column}isBefore(e){return en.isBefore(this,e)}static isBefore(e,t){return e.lineNumbern||e===n&&t>i?(this.startLineNumber=n,this.startColumn=i,this.endLineNumber=e,this.endColumn=t):(this.startLineNumber=e,this.startColumn=t,this.endLineNumber=n,this.endColumn=i)}isEmpty(){return tn.isEmpty(this)}static isEmpty(e){return e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn}containsPosition(e){return tn.containsPosition(this,e)}static containsPosition(e,t){return!(t.lineNumbere.endLineNumber)&&(!(t.lineNumber===e.startLineNumber&&t.columne.endColumn))}static strictContainsPosition(e,t){return!(t.lineNumbere.endLineNumber)&&(!(t.lineNumber===e.startLineNumber&&t.column<=e.startColumn)&&!(t.lineNumber===e.endLineNumber&&t.column>=e.endColumn))}containsRange(e){return tn.containsRange(this,e)}static containsRange(e,t){return!(t.startLineNumbere.endLineNumber||t.endLineNumber>e.endLineNumber)&&(!(t.startLineNumber===e.startLineNumber&&t.startColumne.endColumn)))}strictContainsRange(e){return tn.strictContainsRange(this,e)}static strictContainsRange(e,t){return!(t.startLineNumbere.endLineNumber||t.endLineNumber>e.endLineNumber)&&(!(t.startLineNumber===e.startLineNumber&&t.startColumn<=e.startColumn)&&!(t.endLineNumber===e.endLineNumber&&t.endColumn>=e.endColumn)))}plusRange(e){return tn.plusRange(this,e)}static plusRange(e,t){let n,i,r,s;return t.startLineNumbere.endLineNumber?(r=t.endLineNumber,s=t.endColumn):t.endLineNumber===e.endLineNumber?(r=t.endLineNumber,s=Math.max(t.endColumn,e.endColumn)):(r=e.endLineNumber,s=e.endColumn),new tn(n,i,r,s)}intersectRanges(e){return tn.intersectRanges(this,e)}static intersectRanges(e,t){let n=e.startLineNumber,i=e.startColumn,r=e.endLineNumber,s=e.endColumn;const o=t.startLineNumber,a=t.startColumn,l=t.endLineNumber,u=t.endColumn;return nl?(r=l,s=u):r===l&&(s=Math.min(s,u)),n>r||n===r&&i>s?null:new tn(n,i,r,s)}equalsRange(e){return tn.equalsRange(this,e)}static equalsRange(e,t){return!e&&!t||!!e&&!!t&&e.startLineNumber===t.startLineNumber&&e.startColumn===t.startColumn&&e.endLineNumber===t.endLineNumber&&e.endColumn===t.endColumn}getEndPosition(){return tn.getEndPosition(this)}static getEndPosition(e){return new en(e.endLineNumber,e.endColumn)}getStartPosition(){return tn.getStartPosition(this)}static getStartPosition(e){return new en(e.startLineNumber,e.startColumn)}toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"}setEndPosition(e,t){return new tn(this.startLineNumber,this.startColumn,e,t)}setStartPosition(e,t){return new tn(e,t,this.endLineNumber,this.endColumn)}collapseToStart(){return tn.collapseToStart(this)}static collapseToStart(e){return new tn(e.startLineNumber,e.startColumn,e.startLineNumber,e.startColumn)}collapseToEnd(){return tn.collapseToEnd(this)}static collapseToEnd(e){return new tn(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn)}delta(e){return new tn(this.startLineNumber+e,this.startColumn,this.endLineNumber+e,this.endColumn)}static fromPositions(e,t=e){return new tn(e.lineNumber,e.column,t.lineNumber,t.column)}static lift(e){return e?new tn(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn):null}static isIRange(e){return e&&"number"===typeof e.startLineNumber&&"number"===typeof e.startColumn&&"number"===typeof e.endLineNumber&&"number"===typeof e.endColumn}static areIntersectingOrTouching(e,t){return!(e.endLineNumbere.startLineNumber}toJSON(){return this}}var nn;(function(e){function t(e){return e<0}function n(e){return e>0}function i(e){return 0===e}e.isLessThan=t,e.isGreaterThan=n,e.isNeitherLessOrGreaterThan=i,e.greaterThan=1,e.lessThan=-1,e.neitherLessOrGreaterThan=0})(nn||(nn={}));class rn{constructor(e){this.iterate=e}toArray(){const e=[];return this.iterate((t=>(e.push(t),!0))),e}filter(e){return new rn((t=>this.iterate((n=>!e(n)||t(n)))))}map(e){return new rn((t=>this.iterate((n=>t(e(n))))))}findLast(e){let t;return this.iterate((n=>(e(n)&&(t=n),!0))),t}findLastMaxBy(e){let t,n=!0;return this.iterate((i=>((n||nn.isGreaterThan(e(i,t)))&&(n=!1,t=i),!0))),t}}function sn(e){return e<0?0:e>255?255:0|e}function on(e){return e<0?0:e>4294967295?4294967295:0|e}rn.empty=new rn((e=>{}));class an{constructor(e){this.values=e,this.prefixSum=new Uint32Array(e.length),this.prefixSumValidIndex=new Int32Array(1),this.prefixSumValidIndex[0]=-1}insertValues(e,t){e=on(e);const n=this.values,i=this.prefixSum,r=t.length;return 0!==r&&(this.values=new Uint32Array(n.length+r),this.values.set(n.subarray(0,e),0),this.values.set(n.subarray(e),e+r),this.values.set(t,e),e-1=0&&this.prefixSum.set(i.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}setValue(e,t){return e=on(e),t=on(t),this.values[e]!==t&&(this.values[e]=t,e-1=n.length)return!1;const r=n.length-e;return t>=r&&(t=r),0!==t&&(this.values=new Uint32Array(n.length-t),this.values.set(n.subarray(0,e),0),this.values.set(n.subarray(e+t),e),this.prefixSum=new Uint32Array(this.values.length),e-1=0&&this.prefixSum.set(i.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}getTotalSum(){return 0===this.values.length?0:this._getPrefixSum(this.values.length-1)}getPrefixSum(e){return e<0?0:(e=on(e),this._getPrefixSum(e))}_getPrefixSum(e){if(e<=this.prefixSumValidIndex[0])return this.prefixSum[e];let t=this.prefixSumValidIndex[0]+1;0===t&&(this.prefixSum[0]=this.values[0],t++),e>=this.values.length&&(e=this.values.length-1);for(let n=t;n<=e;n++)this.prefixSum[n]=this.prefixSum[n-1]+this.values[n];return this.prefixSumValidIndex[0]=Math.max(this.prefixSumValidIndex[0],e),this.prefixSum[e]}getIndexOf(e){e=Math.floor(e),this.getTotalSum();let t=0,n=this.values.length-1,i=0,r=0,s=0;while(t<=n)if(i=t+(n-t)/2|0,r=this.prefixSum[i],s=r-this.values[i],e=r))break;t=i+1}return new ln(i,e-s)}}class ln{constructor(e,t){this.index=e,this.remainder=t,this._prefixSumIndexOfResultBrand=void 0,this.index=e,this.remainder=t}}class un{constructor(e,t,n,i){this._uri=e,this._lines=t,this._eol=n,this._versionId=i,this._lineStarts=null,this._cachedTextValue=null}dispose(){this._lines.length=0}get version(){return this._versionId}getText(){return null===this._cachedTextValue&&(this._cachedTextValue=this._lines.join(this._eol)),this._cachedTextValue}onEvents(e){e.eol&&e.eol!==this._eol&&(this._eol=e.eol,this._lineStarts=null);const t=e.changes;for(const n of t)this._acceptDeleteRange(n.range),this._acceptInsertText(new en(n.range.startLineNumber,n.range.startColumn),n.text);this._versionId=e.versionId,this._cachedTextValue=null}_ensureLineStarts(){if(!this._lineStarts){const e=this._eol.length,t=this._lines.length,n=new Uint32Array(t);for(let i=0;i/?";function cn(e=""){let t="(-?\\d*\\.\\d\\w*)|([^";for(const n of hn)e.indexOf(n)>=0||(t+="\\"+n);return t+="\\s]+)",new RegExp(t,"g")}const dn=cn();function gn(e){let t=dn;if(e&&e instanceof RegExp)if(e.global)t=e;else{let n="g";e.ignoreCase&&(n+="i"),e.multiline&&(n+="m"),e.unicode&&(n+="u"),t=new RegExp(e.source,n)}return t.lastIndex=0,t}const mn=new S;function fn(e,t,n,i,r){if(r||(r=c.first(mn)),n.length>r.maxLen){let s=e-r.maxLen/2;return s<0?s=0:i+=s,n=n.substring(s,e+r.maxLen/2),fn(e,t,n,i,r)}const s=Date.now(),o=e-1-i;let a=-1,l=null;for(let u=1;;u++){if(Date.now()-s>=r.timeBudget)break;const e=o-r.windowSize*u;t.lastIndex=Math.max(0,e);const i=pn(t,n,o,a);if(!i&&l)break;if(l=i,e<=0)break;a=e}if(l){const e={word:l[0],startColumn:i+1+l.index,endColumn:i+1+l.index+l[0].length};return t.lastIndex=0,e}return null}function pn(e,t,n,i){let r;while(r=e.exec(t)){const t=r.index||0;if(t<=n&&e.lastIndex>=n)return r;if(i>0&&t>i)return null}return null}mn.unshift({maxLen:1e3,windowSize:15,timeBudget:150});class bn{constructor(e){const t=sn(e);this._defaultValue=t,this._asciiMap=bn._createAsciiMap(t),this._map=new Map}static _createAsciiMap(e){const t=new Uint8Array(256);return t.fill(e),t}set(e,t){const n=sn(t);e>=0&&e<256?this._asciiMap[e]=n:this._map.set(e,n)}get(e){return e>=0&&e<256?this._asciiMap[e]:this._map.get(e)||this._defaultValue}clear(){this._asciiMap.fill(this._defaultValue),this._map.clear()}}class _n{constructor(e,t,n){const i=new Uint8Array(e*t);for(let r=0,s=e*t;rt&&(t=s),i>n&&(n=i),o>n&&(n=o)}t++,n++;const i=new _n(n,t,0);for(let r=0,s=e.length;r=this._maxCharCode?0:this._states.get(e,t)}}let yn=null;function vn(){return null===yn&&(yn=new Cn([[1,104,2],[1,72,2],[1,102,6],[1,70,6],[2,116,3],[2,84,3],[3,116,4],[3,84,4],[4,112,5],[4,80,5],[5,115,9],[5,83,9],[5,58,10],[6,105,7],[6,73,7],[7,108,8],[7,76,8],[8,101,9],[8,69,9],[9,58,10],[10,47,11],[11,47,12]])),yn}let wn=null;function Ln(){if(null===wn){wn=new bn(0);const e=" \t<>'\"、。。、,.:;‘〈「『〔([{「」}])〕』」〉’`~…";for(let n=0;ni);if(i>0){const e=t.charCodeAt(i-1),n=t.charCodeAt(s);(40===e&&41===n||91===e&&93===n||123===e&&125===n)&&s--}return{range:{startLineNumber:n,startColumn:i+1,endLineNumber:n,endColumn:s+2},url:t.substring(i,s+1)}}static computeLinks(e,t=vn()){const n=Ln(),i=[];for(let r=1,s=e.getLineCount();r<=s;r++){const s=e.getLineContent(r),o=s.length;let a=0,l=0,u=0,h=1,c=!1,d=!1,g=!1,m=!1;while(a=0?(i+=n?1:-1,i<0?i=e.length-1:i%=e.length,e[i]):null}}En.INSTANCE=new En;const Rn=Object.freeze((function(e,t){const n=setTimeout(e.bind(t),0);return{dispose(){clearTimeout(n)}}}));var An;(function(e){function t(t){return t===e.None||t===e.Cancelled||(t instanceof xn||!(!t||"object"!==typeof t)&&("boolean"===typeof t.isCancellationRequested&&"function"===typeof t.onCancellationRequested))}e.isCancellationToken=t,e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:M.None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:Rn})})(An||(An={}));class xn{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?Rn:(this._emitter||(this._emitter=new K),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}}class Mn{constructor(e){this._token=void 0,this._parentListener=void 0,this._parentListener=e&&e.onCancellationRequested(this.cancel,this)}get token(){return this._token||(this._token=new xn),this._token}cancel(){this._token?this._token instanceof xn&&this._token.cancel():this._token=An.Cancelled}dispose(e=!1){var t;e&&this.cancel(),null===(t=this._parentListener)||void 0===t||t.dispose(),this._token?this._token instanceof xn&&this._token.dispose():this._token=An.None}}class kn{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(e,t){this._keyCodeToStr[e]=t,this._strToKeyCode[t.toLowerCase()]=e}keyCodeToStr(e){return this._keyCodeToStr[e]}strToKeyCode(e){return this._strToKeyCode[e.toLowerCase()]||0}}const On=new kn,Tn=new kn,In=new kn,Pn=new Array(230),Dn={},Fn=[],Kn=Object.create(null),Vn=Object.create(null),qn=[],Bn=[];for(let Ms=0;Ms<=193;Ms++)qn[Ms]=-1;for(let Ms=0;Ms<=132;Ms++)Bn[Ms]=-1;var Un;function Wn(e,t){const n=(65535&t)<<16>>>0;return(e|n)>>>0}(function(){const e="",t=[[1,0,"None",0,"unknown",0,"VK_UNKNOWN",e,e],[1,1,"Hyper",0,e,0,e,e,e],[1,2,"Super",0,e,0,e,e,e],[1,3,"Fn",0,e,0,e,e,e],[1,4,"FnLock",0,e,0,e,e,e],[1,5,"Suspend",0,e,0,e,e,e],[1,6,"Resume",0,e,0,e,e,e],[1,7,"Turbo",0,e,0,e,e,e],[1,8,"Sleep",0,e,0,"VK_SLEEP",e,e],[1,9,"WakeUp",0,e,0,e,e,e],[0,10,"KeyA",31,"A",65,"VK_A",e,e],[0,11,"KeyB",32,"B",66,"VK_B",e,e],[0,12,"KeyC",33,"C",67,"VK_C",e,e],[0,13,"KeyD",34,"D",68,"VK_D",e,e],[0,14,"KeyE",35,"E",69,"VK_E",e,e],[0,15,"KeyF",36,"F",70,"VK_F",e,e],[0,16,"KeyG",37,"G",71,"VK_G",e,e],[0,17,"KeyH",38,"H",72,"VK_H",e,e],[0,18,"KeyI",39,"I",73,"VK_I",e,e],[0,19,"KeyJ",40,"J",74,"VK_J",e,e],[0,20,"KeyK",41,"K",75,"VK_K",e,e],[0,21,"KeyL",42,"L",76,"VK_L",e,e],[0,22,"KeyM",43,"M",77,"VK_M",e,e],[0,23,"KeyN",44,"N",78,"VK_N",e,e],[0,24,"KeyO",45,"O",79,"VK_O",e,e],[0,25,"KeyP",46,"P",80,"VK_P",e,e],[0,26,"KeyQ",47,"Q",81,"VK_Q",e,e],[0,27,"KeyR",48,"R",82,"VK_R",e,e],[0,28,"KeyS",49,"S",83,"VK_S",e,e],[0,29,"KeyT",50,"T",84,"VK_T",e,e],[0,30,"KeyU",51,"U",85,"VK_U",e,e],[0,31,"KeyV",52,"V",86,"VK_V",e,e],[0,32,"KeyW",53,"W",87,"VK_W",e,e],[0,33,"KeyX",54,"X",88,"VK_X",e,e],[0,34,"KeyY",55,"Y",89,"VK_Y",e,e],[0,35,"KeyZ",56,"Z",90,"VK_Z",e,e],[0,36,"Digit1",22,"1",49,"VK_1",e,e],[0,37,"Digit2",23,"2",50,"VK_2",e,e],[0,38,"Digit3",24,"3",51,"VK_3",e,e],[0,39,"Digit4",25,"4",52,"VK_4",e,e],[0,40,"Digit5",26,"5",53,"VK_5",e,e],[0,41,"Digit6",27,"6",54,"VK_6",e,e],[0,42,"Digit7",28,"7",55,"VK_7",e,e],[0,43,"Digit8",29,"8",56,"VK_8",e,e],[0,44,"Digit9",30,"9",57,"VK_9",e,e],[0,45,"Digit0",21,"0",48,"VK_0",e,e],[1,46,"Enter",3,"Enter",13,"VK_RETURN",e,e],[1,47,"Escape",9,"Escape",27,"VK_ESCAPE",e,e],[1,48,"Backspace",1,"Backspace",8,"VK_BACK",e,e],[1,49,"Tab",2,"Tab",9,"VK_TAB",e,e],[1,50,"Space",10,"Space",32,"VK_SPACE",e,e],[0,51,"Minus",88,"-",189,"VK_OEM_MINUS","-","OEM_MINUS"],[0,52,"Equal",86,"=",187,"VK_OEM_PLUS","=","OEM_PLUS"],[0,53,"BracketLeft",92,"[",219,"VK_OEM_4","[","OEM_4"],[0,54,"BracketRight",94,"]",221,"VK_OEM_6","]","OEM_6"],[0,55,"Backslash",93,"\\",220,"VK_OEM_5","\\","OEM_5"],[0,56,"IntlHash",0,e,0,e,e,e],[0,57,"Semicolon",85,";",186,"VK_OEM_1",";","OEM_1"],[0,58,"Quote",95,"'",222,"VK_OEM_7","'","OEM_7"],[0,59,"Backquote",91,"`",192,"VK_OEM_3","`","OEM_3"],[0,60,"Comma",87,",",188,"VK_OEM_COMMA",",","OEM_COMMA"],[0,61,"Period",89,".",190,"VK_OEM_PERIOD",".","OEM_PERIOD"],[0,62,"Slash",90,"/",191,"VK_OEM_2","/","OEM_2"],[1,63,"CapsLock",8,"CapsLock",20,"VK_CAPITAL",e,e],[1,64,"F1",59,"F1",112,"VK_F1",e,e],[1,65,"F2",60,"F2",113,"VK_F2",e,e],[1,66,"F3",61,"F3",114,"VK_F3",e,e],[1,67,"F4",62,"F4",115,"VK_F4",e,e],[1,68,"F5",63,"F5",116,"VK_F5",e,e],[1,69,"F6",64,"F6",117,"VK_F6",e,e],[1,70,"F7",65,"F7",118,"VK_F7",e,e],[1,71,"F8",66,"F8",119,"VK_F8",e,e],[1,72,"F9",67,"F9",120,"VK_F9",e,e],[1,73,"F10",68,"F10",121,"VK_F10",e,e],[1,74,"F11",69,"F11",122,"VK_F11",e,e],[1,75,"F12",70,"F12",123,"VK_F12",e,e],[1,76,"PrintScreen",0,e,0,e,e,e],[1,77,"ScrollLock",84,"ScrollLock",145,"VK_SCROLL",e,e],[1,78,"Pause",7,"PauseBreak",19,"VK_PAUSE",e,e],[1,79,"Insert",19,"Insert",45,"VK_INSERT",e,e],[1,80,"Home",14,"Home",36,"VK_HOME",e,e],[1,81,"PageUp",11,"PageUp",33,"VK_PRIOR",e,e],[1,82,"Delete",20,"Delete",46,"VK_DELETE",e,e],[1,83,"End",13,"End",35,"VK_END",e,e],[1,84,"PageDown",12,"PageDown",34,"VK_NEXT",e,e],[1,85,"ArrowRight",17,"RightArrow",39,"VK_RIGHT","Right",e],[1,86,"ArrowLeft",15,"LeftArrow",37,"VK_LEFT","Left",e],[1,87,"ArrowDown",18,"DownArrow",40,"VK_DOWN","Down",e],[1,88,"ArrowUp",16,"UpArrow",38,"VK_UP","Up",e],[1,89,"NumLock",83,"NumLock",144,"VK_NUMLOCK",e,e],[1,90,"NumpadDivide",113,"NumPad_Divide",111,"VK_DIVIDE",e,e],[1,91,"NumpadMultiply",108,"NumPad_Multiply",106,"VK_MULTIPLY",e,e],[1,92,"NumpadSubtract",111,"NumPad_Subtract",109,"VK_SUBTRACT",e,e],[1,93,"NumpadAdd",109,"NumPad_Add",107,"VK_ADD",e,e],[1,94,"NumpadEnter",3,e,0,e,e,e],[1,95,"Numpad1",99,"NumPad1",97,"VK_NUMPAD1",e,e],[1,96,"Numpad2",100,"NumPad2",98,"VK_NUMPAD2",e,e],[1,97,"Numpad3",101,"NumPad3",99,"VK_NUMPAD3",e,e],[1,98,"Numpad4",102,"NumPad4",100,"VK_NUMPAD4",e,e],[1,99,"Numpad5",103,"NumPad5",101,"VK_NUMPAD5",e,e],[1,100,"Numpad6",104,"NumPad6",102,"VK_NUMPAD6",e,e],[1,101,"Numpad7",105,"NumPad7",103,"VK_NUMPAD7",e,e],[1,102,"Numpad8",106,"NumPad8",104,"VK_NUMPAD8",e,e],[1,103,"Numpad9",107,"NumPad9",105,"VK_NUMPAD9",e,e],[1,104,"Numpad0",98,"NumPad0",96,"VK_NUMPAD0",e,e],[1,105,"NumpadDecimal",112,"NumPad_Decimal",110,"VK_DECIMAL",e,e],[0,106,"IntlBackslash",97,"OEM_102",226,"VK_OEM_102",e,e],[1,107,"ContextMenu",58,"ContextMenu",93,e,e,e],[1,108,"Power",0,e,0,e,e,e],[1,109,"NumpadEqual",0,e,0,e,e,e],[1,110,"F13",71,"F13",124,"VK_F13",e,e],[1,111,"F14",72,"F14",125,"VK_F14",e,e],[1,112,"F15",73,"F15",126,"VK_F15",e,e],[1,113,"F16",74,"F16",127,"VK_F16",e,e],[1,114,"F17",75,"F17",128,"VK_F17",e,e],[1,115,"F18",76,"F18",129,"VK_F18",e,e],[1,116,"F19",77,"F19",130,"VK_F19",e,e],[1,117,"F20",78,"F20",131,"VK_F20",e,e],[1,118,"F21",79,"F21",132,"VK_F21",e,e],[1,119,"F22",80,"F22",133,"VK_F22",e,e],[1,120,"F23",81,"F23",134,"VK_F23",e,e],[1,121,"F24",82,"F24",135,"VK_F24",e,e],[1,122,"Open",0,e,0,e,e,e],[1,123,"Help",0,e,0,e,e,e],[1,124,"Select",0,e,0,e,e,e],[1,125,"Again",0,e,0,e,e,e],[1,126,"Undo",0,e,0,e,e,e],[1,127,"Cut",0,e,0,e,e,e],[1,128,"Copy",0,e,0,e,e,e],[1,129,"Paste",0,e,0,e,e,e],[1,130,"Find",0,e,0,e,e,e],[1,131,"AudioVolumeMute",117,"AudioVolumeMute",173,"VK_VOLUME_MUTE",e,e],[1,132,"AudioVolumeUp",118,"AudioVolumeUp",175,"VK_VOLUME_UP",e,e],[1,133,"AudioVolumeDown",119,"AudioVolumeDown",174,"VK_VOLUME_DOWN",e,e],[1,134,"NumpadComma",110,"NumPad_Separator",108,"VK_SEPARATOR",e,e],[0,135,"IntlRo",115,"ABNT_C1",193,"VK_ABNT_C1",e,e],[1,136,"KanaMode",0,e,0,e,e,e],[0,137,"IntlYen",0,e,0,e,e,e],[1,138,"Convert",0,e,0,e,e,e],[1,139,"NonConvert",0,e,0,e,e,e],[1,140,"Lang1",0,e,0,e,e,e],[1,141,"Lang2",0,e,0,e,e,e],[1,142,"Lang3",0,e,0,e,e,e],[1,143,"Lang4",0,e,0,e,e,e],[1,144,"Lang5",0,e,0,e,e,e],[1,145,"Abort",0,e,0,e,e,e],[1,146,"Props",0,e,0,e,e,e],[1,147,"NumpadParenLeft",0,e,0,e,e,e],[1,148,"NumpadParenRight",0,e,0,e,e,e],[1,149,"NumpadBackspace",0,e,0,e,e,e],[1,150,"NumpadMemoryStore",0,e,0,e,e,e],[1,151,"NumpadMemoryRecall",0,e,0,e,e,e],[1,152,"NumpadMemoryClear",0,e,0,e,e,e],[1,153,"NumpadMemoryAdd",0,e,0,e,e,e],[1,154,"NumpadMemorySubtract",0,e,0,e,e,e],[1,155,"NumpadClear",131,"Clear",12,"VK_CLEAR",e,e],[1,156,"NumpadClearEntry",0,e,0,e,e,e],[1,0,e,5,"Ctrl",17,"VK_CONTROL",e,e],[1,0,e,4,"Shift",16,"VK_SHIFT",e,e],[1,0,e,6,"Alt",18,"VK_MENU",e,e],[1,0,e,57,"Meta",91,"VK_COMMAND",e,e],[1,157,"ControlLeft",5,e,0,"VK_LCONTROL",e,e],[1,158,"ShiftLeft",4,e,0,"VK_LSHIFT",e,e],[1,159,"AltLeft",6,e,0,"VK_LMENU",e,e],[1,160,"MetaLeft",57,e,0,"VK_LWIN",e,e],[1,161,"ControlRight",5,e,0,"VK_RCONTROL",e,e],[1,162,"ShiftRight",4,e,0,"VK_RSHIFT",e,e],[1,163,"AltRight",6,e,0,"VK_RMENU",e,e],[1,164,"MetaRight",57,e,0,"VK_RWIN",e,e],[1,165,"BrightnessUp",0,e,0,e,e,e],[1,166,"BrightnessDown",0,e,0,e,e,e],[1,167,"MediaPlay",0,e,0,e,e,e],[1,168,"MediaRecord",0,e,0,e,e,e],[1,169,"MediaFastForward",0,e,0,e,e,e],[1,170,"MediaRewind",0,e,0,e,e,e],[1,171,"MediaTrackNext",124,"MediaTrackNext",176,"VK_MEDIA_NEXT_TRACK",e,e],[1,172,"MediaTrackPrevious",125,"MediaTrackPrevious",177,"VK_MEDIA_PREV_TRACK",e,e],[1,173,"MediaStop",126,"MediaStop",178,"VK_MEDIA_STOP",e,e],[1,174,"Eject",0,e,0,e,e,e],[1,175,"MediaPlayPause",127,"MediaPlayPause",179,"VK_MEDIA_PLAY_PAUSE",e,e],[1,176,"MediaSelect",128,"LaunchMediaPlayer",181,"VK_MEDIA_LAUNCH_MEDIA_SELECT",e,e],[1,177,"LaunchMail",129,"LaunchMail",180,"VK_MEDIA_LAUNCH_MAIL",e,e],[1,178,"LaunchApp2",130,"LaunchApp2",183,"VK_MEDIA_LAUNCH_APP2",e,e],[1,179,"LaunchApp1",0,e,0,"VK_MEDIA_LAUNCH_APP1",e,e],[1,180,"SelectTask",0,e,0,e,e,e],[1,181,"LaunchScreenSaver",0,e,0,e,e,e],[1,182,"BrowserSearch",120,"BrowserSearch",170,"VK_BROWSER_SEARCH",e,e],[1,183,"BrowserHome",121,"BrowserHome",172,"VK_BROWSER_HOME",e,e],[1,184,"BrowserBack",122,"BrowserBack",166,"VK_BROWSER_BACK",e,e],[1,185,"BrowserForward",123,"BrowserForward",167,"VK_BROWSER_FORWARD",e,e],[1,186,"BrowserStop",0,e,0,"VK_BROWSER_STOP",e,e],[1,187,"BrowserRefresh",0,e,0,"VK_BROWSER_REFRESH",e,e],[1,188,"BrowserFavorites",0,e,0,"VK_BROWSER_FAVORITES",e,e],[1,189,"ZoomToggle",0,e,0,e,e,e],[1,190,"MailReply",0,e,0,e,e,e],[1,191,"MailForward",0,e,0,e,e,e],[1,192,"MailSend",0,e,0,e,e,e],[1,0,e,114,"KeyInComposition",229,e,e,e],[1,0,e,116,"ABNT_C2",194,"VK_ABNT_C2",e,e],[1,0,e,96,"OEM_8",223,"VK_OEM_8",e,e],[1,0,e,0,e,0,"VK_KANA",e,e],[1,0,e,0,e,0,"VK_HANGUL",e,e],[1,0,e,0,e,0,"VK_JUNJA",e,e],[1,0,e,0,e,0,"VK_FINAL",e,e],[1,0,e,0,e,0,"VK_HANJA",e,e],[1,0,e,0,e,0,"VK_KANJI",e,e],[1,0,e,0,e,0,"VK_CONVERT",e,e],[1,0,e,0,e,0,"VK_NONCONVERT",e,e],[1,0,e,0,e,0,"VK_ACCEPT",e,e],[1,0,e,0,e,0,"VK_MODECHANGE",e,e],[1,0,e,0,e,0,"VK_SELECT",e,e],[1,0,e,0,e,0,"VK_PRINT",e,e],[1,0,e,0,e,0,"VK_EXECUTE",e,e],[1,0,e,0,e,0,"VK_SNAPSHOT",e,e],[1,0,e,0,e,0,"VK_HELP",e,e],[1,0,e,0,e,0,"VK_APPS",e,e],[1,0,e,0,e,0,"VK_PROCESSKEY",e,e],[1,0,e,0,e,0,"VK_PACKET",e,e],[1,0,e,0,e,0,"VK_DBE_SBCSCHAR",e,e],[1,0,e,0,e,0,"VK_DBE_DBCSCHAR",e,e],[1,0,e,0,e,0,"VK_ATTN",e,e],[1,0,e,0,e,0,"VK_CRSEL",e,e],[1,0,e,0,e,0,"VK_EXSEL",e,e],[1,0,e,0,e,0,"VK_EREOF",e,e],[1,0,e,0,e,0,"VK_PLAY",e,e],[1,0,e,0,e,0,"VK_ZOOM",e,e],[1,0,e,0,e,0,"VK_NONAME",e,e],[1,0,e,0,e,0,"VK_PA1",e,e],[1,0,e,0,e,0,"VK_OEM_CLEAR",e,e]],n=[],i=[];for(const r of t){const[e,t,s,o,a,l,u,h,c]=r;if(i[t]||(i[t]=!0,Fn[t]=s,Kn[s]=t,Vn[s.toLowerCase()]=t,e&&(qn[t]=o,0!==o&&3!==o&&5!==o&&4!==o&&6!==o&&57!==o&&(Bn[o]=t))),!n[o]){if(n[o]=!0,!a)throw new Error(`String representation missing for key code ${o} around scan code ${s}`);On.define(o,a),Tn.define(o,h||a),In.define(o,c||h||a)}l&&(Pn[l]=o),u&&(Dn[u]=o)}Bn[3]=46})(),function(e){function t(e){return On.keyCodeToStr(e)}function n(e){return On.strToKeyCode(e)}function i(e){return Tn.keyCodeToStr(e)}function r(e){return In.keyCodeToStr(e)}function s(e){return Tn.strToKeyCode(e)||In.strToKeyCode(e)}function o(e){if(e>=98&&e<=113)return null;switch(e){case 16:return"Up";case 18:return"Down";case 15:return"Left";case 17:return"Right"}return On.keyCodeToStr(e)}e.toString=t,e.fromString=n,e.toUserSettingsUS=i,e.toUserSettingsGeneral=r,e.fromUserSettings=s,e.toElectronAccelerator=o}(Un||(Un={}));class Hn extends tn{constructor(e,t,n,i){super(e,t,n,i),this.selectionStartLineNumber=e,this.selectionStartColumn=t,this.positionLineNumber=n,this.positionColumn=i}toString(){return"["+this.selectionStartLineNumber+","+this.selectionStartColumn+" -> "+this.positionLineNumber+","+this.positionColumn+"]"}equalsSelection(e){return Hn.selectionsEqual(this,e)}static selectionsEqual(e,t){return e.selectionStartLineNumber===t.selectionStartLineNumber&&e.selectionStartColumn===t.selectionStartColumn&&e.positionLineNumber===t.positionLineNumber&&e.positionColumn===t.positionColumn}getDirection(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1}setEndPosition(e,t){return 0===this.getDirection()?new Hn(this.startLineNumber,this.startColumn,e,t):new Hn(e,t,this.startLineNumber,this.startColumn)}getPosition(){return new en(this.positionLineNumber,this.positionColumn)}getSelectionStart(){return new en(this.selectionStartLineNumber,this.selectionStartColumn)}setStartPosition(e,t){return 0===this.getDirection()?new Hn(e,t,this.endLineNumber,this.endColumn):new Hn(this.endLineNumber,this.endColumn,e,t)}static fromPositions(e,t=e){return new Hn(e.lineNumber,e.column,t.lineNumber,t.column)}static fromRange(e,t){return 0===t?new Hn(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn):new Hn(e.endLineNumber,e.endColumn,e.startLineNumber,e.startColumn)}static liftSelection(e){return new Hn(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn)}static selectionsArrEqual(e,t){if(e&&!t||!e&&t)return!1;if(!e&&!t)return!0;if(e.length!==t.length)return!1;for(let n=0,i=e.length;n{this._tokenizationSupports.get(e)===t&&(this._tokenizationSupports.delete(e),this.handleChange([e]))}))}get(e){return this._tokenizationSupports.get(e)||null}registerFactory(e,t){var n;null===(n=this._factories.get(e))||void 0===n||n.dispose();const i=new ti(this,e,t);return this._factories.set(e,i),v((()=>{const t=this._factories.get(e);t&&t===i&&(this._factories.delete(e),t.dispose())}))}getOrCreate(e){return Zn(this,void 0,void 0,(function*(){const t=this.get(e);if(t)return t;const n=this._factories.get(e);return!n||n.isResolved?null:(yield n.resolve(),this.get(e))}))}isResolved(e){const t=this.get(e);if(t)return!0;const n=this._factories.get(e);return!(n&&!n.isResolved)}setColorMap(e){this._colorMap=e,this._onDidChange.fire({changedLanguages:Array.from(this._tokenizationSupports.keys()),changedColorMap:!0})}getColorMap(){return this._colorMap}getDefaultBackground(){return this._colorMap&&this._colorMap.length>2?this._colorMap[2]:null}}class ti extends L{get isResolved(){return this._isResolved}constructor(e,t,n){super(),this._registry=e,this._languageId=t,this._factory=n,this._isDisposed=!1,this._resolvePromise=null,this._isResolved=!1}dispose(){this._isDisposed=!0,super.dispose()}resolve(){return Zn(this,void 0,void 0,(function*(){return this._resolvePromise||(this._resolvePromise=this._create()),this._resolvePromise}))}_create(){return Zn(this,void 0,void 0,(function*(){const e=yield this._factory.tokenizationSupport;this._isResolved=!0,e&&!this._isDisposed&&this._register(this._registry.register(this._languageId,e))}))}}class ni{constructor(e,t,n){this.offset=e,this.type=t,this.language=n,this._tokenBrand=void 0}toString(){return"("+this.offset+", "+this.type+")"}}(function(e){const t=new Map;function n(e){let n=t.get(e);return n||(console.info("No codicon found for CompletionItemKind "+e),n=Gn.symbolProperty),n}t.set(0,Gn.symbolMethod),t.set(1,Gn.symbolFunction),t.set(2,Gn.symbolConstructor),t.set(3,Gn.symbolField),t.set(4,Gn.symbolVariable),t.set(5,Gn.symbolClass),t.set(6,Gn.symbolStruct),t.set(7,Gn.symbolInterface),t.set(8,Gn.symbolModule),t.set(9,Gn.symbolProperty),t.set(10,Gn.symbolEvent),t.set(11,Gn.symbolOperator),t.set(12,Gn.symbolUnit),t.set(13,Gn.symbolValue),t.set(15,Gn.symbolEnum),t.set(14,Gn.symbolConstant),t.set(15,Gn.symbolEnum),t.set(16,Gn.symbolEnumMember),t.set(17,Gn.symbolKeyword),t.set(27,Gn.symbolSnippet),t.set(18,Gn.symbolText),t.set(19,Gn.symbolColor),t.set(20,Gn.symbolFile),t.set(21,Gn.symbolReference),t.set(22,Gn.symbolCustomColor),t.set(23,Gn.symbolFolder),t.set(24,Gn.symbolTypeParameter),t.set(25,Gn.account),t.set(26,Gn.issues),e.toIcon=n;const i=new Map;function r(e,t){let n=i.get(e);return"undefined"!==typeof n||t||(n=9),n}i.set("method",0),i.set("function",1),i.set("constructor",2),i.set("field",3),i.set("variable",4),i.set("class",5),i.set("struct",6),i.set("interface",7),i.set("module",8),i.set("property",9),i.set("event",10),i.set("operator",11),i.set("unit",12),i.set("value",13),i.set("constant",14),i.set("enum",15),i.set("enum-member",16),i.set("enumMember",16),i.set("keyword",17),i.set("snippet",27),i.set("text",18),i.set("color",19),i.set("file",20),i.set("reference",21),i.set("customcolor",22),i.set("folder",23),i.set("type-parameter",24),i.set("typeParameter",24),i.set("account",25),i.set("issue",26),e.fromString=r})(Qn||(Qn={})),function(e){e[e["Automatic"]=0]="Automatic",e[e["Explicit"]=1]="Explicit"}(Yn||(Yn={}));(function(e){e[e["Invoke"]=1]="Invoke",e[e["TriggerCharacter"]=2]="TriggerCharacter",e[e["ContentChange"]=3]="ContentChange"})(Jn||(Jn={})),function(e){e[e["Text"]=0]="Text",e[e["Read"]=1]="Read",e[e["Write"]=2]="Write"}(Xn||(Xn={}));$("Array","array"),$("Boolean","boolean"),$("Class","class"),$("Constant","constant"),$("Constructor","constructor"),$("Enum","enumeration"),$("EnumMember","enumeration member"),$("Event","event"),$("Field","field"),$("File","file"),$("Function","function"),$("Interface","interface"),$("Key","key"),$("Method","method"),$("Module","module"),$("Namespace","namespace"),$("Null","null"),$("Number","number"),$("Object","object"),$("Operator","operator"),$("Package","package"),$("Property","property"),$("String","string"),$("Struct","struct"),$("TypeParameter","type parameter"),$("Variable","variable");var ii,ri,si;(function(e){const t=new Map;function n(e){let n=t.get(e);return n||(console.info("No codicon found for SymbolKind "+e),n=Gn.symbolProperty),n}t.set(0,Gn.symbolFile),t.set(1,Gn.symbolModule),t.set(2,Gn.symbolNamespace),t.set(3,Gn.symbolPackage),t.set(4,Gn.symbolClass),t.set(5,Gn.symbolMethod),t.set(6,Gn.symbolProperty),t.set(7,Gn.symbolField),t.set(8,Gn.symbolConstructor),t.set(9,Gn.symbolEnum),t.set(10,Gn.symbolInterface),t.set(11,Gn.symbolFunction),t.set(12,Gn.symbolVariable),t.set(13,Gn.symbolConstant),t.set(14,Gn.symbolString),t.set(15,Gn.symbolNumber),t.set(16,Gn.symbolBoolean),t.set(17,Gn.symbolArray),t.set(18,Gn.symbolObject),t.set(19,Gn.symbolKey),t.set(20,Gn.symbolNull),t.set(21,Gn.symbolEnumMember),t.set(22,Gn.symbolStruct),t.set(23,Gn.symbolEvent),t.set(24,Gn.symbolOperator),t.set(25,Gn.symbolTypeParameter),e.toIcon=n})(ii||(ii={}));class oi{static fromValue(e){switch(e){case"comment":return oi.Comment;case"imports":return oi.Imports;case"region":return oi.Region}return new oi(e)}constructor(e){this.value=e}}oi.Comment=new oi("comment"),oi.Imports=new oi("imports"),oi.Region=new oi("region"),function(e){function t(e){return!(!e||"object"!==typeof e)&&("string"===typeof e.id&&"string"===typeof e.title)}e.is=t}(ri||(ri={})),function(e){e[e["Type"]=1]="Type",e[e["Parameter"]=2]="Parameter"}(si||(si={}));new ei;var ai,li,ui,hi,ci,di,gi,mi,fi,pi,bi,_i,Ci,yi,vi,wi,Li,Ni,Si,Ei,Ri,Ai,xi,Mi,ki,Oi,Ti,Ii,Pi,Di,Fi,Ki,Vi,qi,Bi,Ui,Wi,Hi,$i;(function(e){e[e["Unknown"]=0]="Unknown",e[e["Disabled"]=1]="Disabled",e[e["Enabled"]=2]="Enabled"})(ai||(ai={})),function(e){e[e["Invoke"]=1]="Invoke",e[e["Auto"]=2]="Auto"}(li||(li={})),function(e){e[e["None"]=0]="None",e[e["KeepWhitespace"]=1]="KeepWhitespace",e[e["InsertAsSnippet"]=4]="InsertAsSnippet"}(ui||(ui={})),function(e){e[e["Method"]=0]="Method",e[e["Function"]=1]="Function",e[e["Constructor"]=2]="Constructor",e[e["Field"]=3]="Field",e[e["Variable"]=4]="Variable",e[e["Class"]=5]="Class",e[e["Struct"]=6]="Struct",e[e["Interface"]=7]="Interface",e[e["Module"]=8]="Module",e[e["Property"]=9]="Property",e[e["Event"]=10]="Event",e[e["Operator"]=11]="Operator",e[e["Unit"]=12]="Unit",e[e["Value"]=13]="Value",e[e["Constant"]=14]="Constant",e[e["Enum"]=15]="Enum",e[e["EnumMember"]=16]="EnumMember",e[e["Keyword"]=17]="Keyword",e[e["Text"]=18]="Text",e[e["Color"]=19]="Color",e[e["File"]=20]="File",e[e["Reference"]=21]="Reference",e[e["Customcolor"]=22]="Customcolor",e[e["Folder"]=23]="Folder",e[e["TypeParameter"]=24]="TypeParameter",e[e["User"]=25]="User",e[e["Issue"]=26]="Issue",e[e["Snippet"]=27]="Snippet"}(hi||(hi={})),function(e){e[e["Deprecated"]=1]="Deprecated"}(ci||(ci={})),function(e){e[e["Invoke"]=0]="Invoke",e[e["TriggerCharacter"]=1]="TriggerCharacter",e[e["TriggerForIncompleteCompletions"]=2]="TriggerForIncompleteCompletions"}(di||(di={})),function(e){e[e["EXACT"]=0]="EXACT",e[e["ABOVE"]=1]="ABOVE",e[e["BELOW"]=2]="BELOW"}(gi||(gi={})),function(e){e[e["NotSet"]=0]="NotSet",e[e["ContentFlush"]=1]="ContentFlush",e[e["RecoverFromMarkers"]=2]="RecoverFromMarkers",e[e["Explicit"]=3]="Explicit",e[e["Paste"]=4]="Paste",e[e["Undo"]=5]="Undo",e[e["Redo"]=6]="Redo"}(mi||(mi={})),function(e){e[e["LF"]=1]="LF",e[e["CRLF"]=2]="CRLF"}(fi||(fi={})),function(e){e[e["Text"]=0]="Text",e[e["Read"]=1]="Read",e[e["Write"]=2]="Write"}(pi||(pi={})),function(e){e[e["None"]=0]="None",e[e["Keep"]=1]="Keep",e[e["Brackets"]=2]="Brackets",e[e["Advanced"]=3]="Advanced",e[e["Full"]=4]="Full"}(bi||(bi={})),function(e){e[e["acceptSuggestionOnCommitCharacter"]=0]="acceptSuggestionOnCommitCharacter",e[e["acceptSuggestionOnEnter"]=1]="acceptSuggestionOnEnter",e[e["accessibilitySupport"]=2]="accessibilitySupport",e[e["accessibilityPageSize"]=3]="accessibilityPageSize",e[e["ariaLabel"]=4]="ariaLabel",e[e["ariaRequired"]=5]="ariaRequired",e[e["autoClosingBrackets"]=6]="autoClosingBrackets",e[e["screenReaderAnnounceInlineSuggestion"]=7]="screenReaderAnnounceInlineSuggestion",e[e["autoClosingDelete"]=8]="autoClosingDelete",e[e["autoClosingOvertype"]=9]="autoClosingOvertype",e[e["autoClosingQuotes"]=10]="autoClosingQuotes",e[e["autoIndent"]=11]="autoIndent",e[e["automaticLayout"]=12]="automaticLayout",e[e["autoSurround"]=13]="autoSurround",e[e["bracketPairColorization"]=14]="bracketPairColorization",e[e["guides"]=15]="guides",e[e["codeLens"]=16]="codeLens",e[e["codeLensFontFamily"]=17]="codeLensFontFamily",e[e["codeLensFontSize"]=18]="codeLensFontSize",e[e["colorDecorators"]=19]="colorDecorators",e[e["colorDecoratorsLimit"]=20]="colorDecoratorsLimit",e[e["columnSelection"]=21]="columnSelection",e[e["comments"]=22]="comments",e[e["contextmenu"]=23]="contextmenu",e[e["copyWithSyntaxHighlighting"]=24]="copyWithSyntaxHighlighting",e[e["cursorBlinking"]=25]="cursorBlinking",e[e["cursorSmoothCaretAnimation"]=26]="cursorSmoothCaretAnimation",e[e["cursorStyle"]=27]="cursorStyle",e[e["cursorSurroundingLines"]=28]="cursorSurroundingLines",e[e["cursorSurroundingLinesStyle"]=29]="cursorSurroundingLinesStyle",e[e["cursorWidth"]=30]="cursorWidth",e[e["disableLayerHinting"]=31]="disableLayerHinting",e[e["disableMonospaceOptimizations"]=32]="disableMonospaceOptimizations",e[e["domReadOnly"]=33]="domReadOnly",e[e["dragAndDrop"]=34]="dragAndDrop",e[e["dropIntoEditor"]=35]="dropIntoEditor",e[e["emptySelectionClipboard"]=36]="emptySelectionClipboard",e[e["experimentalWhitespaceRendering"]=37]="experimentalWhitespaceRendering",e[e["extraEditorClassName"]=38]="extraEditorClassName",e[e["fastScrollSensitivity"]=39]="fastScrollSensitivity",e[e["find"]=40]="find",e[e["fixedOverflowWidgets"]=41]="fixedOverflowWidgets",e[e["folding"]=42]="folding",e[e["foldingStrategy"]=43]="foldingStrategy",e[e["foldingHighlight"]=44]="foldingHighlight",e[e["foldingImportsByDefault"]=45]="foldingImportsByDefault",e[e["foldingMaximumRegions"]=46]="foldingMaximumRegions",e[e["unfoldOnClickAfterEndOfLine"]=47]="unfoldOnClickAfterEndOfLine",e[e["fontFamily"]=48]="fontFamily",e[e["fontInfo"]=49]="fontInfo",e[e["fontLigatures"]=50]="fontLigatures",e[e["fontSize"]=51]="fontSize",e[e["fontWeight"]=52]="fontWeight",e[e["fontVariations"]=53]="fontVariations",e[e["formatOnPaste"]=54]="formatOnPaste",e[e["formatOnType"]=55]="formatOnType",e[e["glyphMargin"]=56]="glyphMargin",e[e["gotoLocation"]=57]="gotoLocation",e[e["hideCursorInOverviewRuler"]=58]="hideCursorInOverviewRuler",e[e["hover"]=59]="hover",e[e["inDiffEditor"]=60]="inDiffEditor",e[e["inlineSuggest"]=61]="inlineSuggest",e[e["letterSpacing"]=62]="letterSpacing",e[e["lightbulb"]=63]="lightbulb",e[e["lineDecorationsWidth"]=64]="lineDecorationsWidth",e[e["lineHeight"]=65]="lineHeight",e[e["lineNumbers"]=66]="lineNumbers",e[e["lineNumbersMinChars"]=67]="lineNumbersMinChars",e[e["linkedEditing"]=68]="linkedEditing",e[e["links"]=69]="links",e[e["matchBrackets"]=70]="matchBrackets",e[e["minimap"]=71]="minimap",e[e["mouseStyle"]=72]="mouseStyle",e[e["mouseWheelScrollSensitivity"]=73]="mouseWheelScrollSensitivity",e[e["mouseWheelZoom"]=74]="mouseWheelZoom",e[e["multiCursorMergeOverlapping"]=75]="multiCursorMergeOverlapping",e[e["multiCursorModifier"]=76]="multiCursorModifier",e[e["multiCursorPaste"]=77]="multiCursorPaste",e[e["multiCursorLimit"]=78]="multiCursorLimit",e[e["occurrencesHighlight"]=79]="occurrencesHighlight",e[e["overviewRulerBorder"]=80]="overviewRulerBorder",e[e["overviewRulerLanes"]=81]="overviewRulerLanes",e[e["padding"]=82]="padding",e[e["pasteAs"]=83]="pasteAs",e[e["parameterHints"]=84]="parameterHints",e[e["peekWidgetDefaultFocus"]=85]="peekWidgetDefaultFocus",e[e["definitionLinkOpensInPeek"]=86]="definitionLinkOpensInPeek",e[e["quickSuggestions"]=87]="quickSuggestions",e[e["quickSuggestionsDelay"]=88]="quickSuggestionsDelay",e[e["readOnly"]=89]="readOnly",e[e["readOnlyMessage"]=90]="readOnlyMessage",e[e["renameOnType"]=91]="renameOnType",e[e["renderControlCharacters"]=92]="renderControlCharacters",e[e["renderFinalNewline"]=93]="renderFinalNewline",e[e["renderLineHighlight"]=94]="renderLineHighlight",e[e["renderLineHighlightOnlyWhenFocus"]=95]="renderLineHighlightOnlyWhenFocus",e[e["renderValidationDecorations"]=96]="renderValidationDecorations",e[e["renderWhitespace"]=97]="renderWhitespace",e[e["revealHorizontalRightPadding"]=98]="revealHorizontalRightPadding",e[e["roundedSelection"]=99]="roundedSelection",e[e["rulers"]=100]="rulers",e[e["scrollbar"]=101]="scrollbar",e[e["scrollBeyondLastColumn"]=102]="scrollBeyondLastColumn",e[e["scrollBeyondLastLine"]=103]="scrollBeyondLastLine",e[e["scrollPredominantAxis"]=104]="scrollPredominantAxis",e[e["selectionClipboard"]=105]="selectionClipboard",e[e["selectionHighlight"]=106]="selectionHighlight",e[e["selectOnLineNumbers"]=107]="selectOnLineNumbers",e[e["showFoldingControls"]=108]="showFoldingControls",e[e["showUnused"]=109]="showUnused",e[e["snippetSuggestions"]=110]="snippetSuggestions",e[e["smartSelect"]=111]="smartSelect",e[e["smoothScrolling"]=112]="smoothScrolling",e[e["stickyScroll"]=113]="stickyScroll",e[e["stickyTabStops"]=114]="stickyTabStops",e[e["stopRenderingLineAfter"]=115]="stopRenderingLineAfter",e[e["suggest"]=116]="suggest",e[e["suggestFontSize"]=117]="suggestFontSize",e[e["suggestLineHeight"]=118]="suggestLineHeight",e[e["suggestOnTriggerCharacters"]=119]="suggestOnTriggerCharacters",e[e["suggestSelection"]=120]="suggestSelection",e[e["tabCompletion"]=121]="tabCompletion",e[e["tabIndex"]=122]="tabIndex",e[e["unicodeHighlighting"]=123]="unicodeHighlighting",e[e["unusualLineTerminators"]=124]="unusualLineTerminators",e[e["useShadowDOM"]=125]="useShadowDOM",e[e["useTabStops"]=126]="useTabStops",e[e["wordBreak"]=127]="wordBreak",e[e["wordSeparators"]=128]="wordSeparators",e[e["wordWrap"]=129]="wordWrap",e[e["wordWrapBreakAfterCharacters"]=130]="wordWrapBreakAfterCharacters",e[e["wordWrapBreakBeforeCharacters"]=131]="wordWrapBreakBeforeCharacters",e[e["wordWrapColumn"]=132]="wordWrapColumn",e[e["wordWrapOverride1"]=133]="wordWrapOverride1",e[e["wordWrapOverride2"]=134]="wordWrapOverride2",e[e["wrappingIndent"]=135]="wrappingIndent",e[e["wrappingStrategy"]=136]="wrappingStrategy",e[e["showDeprecated"]=137]="showDeprecated",e[e["inlayHints"]=138]="inlayHints",e[e["editorClassName"]=139]="editorClassName",e[e["pixelRatio"]=140]="pixelRatio",e[e["tabFocusMode"]=141]="tabFocusMode",e[e["layoutInfo"]=142]="layoutInfo",e[e["wrappingInfo"]=143]="wrappingInfo",e[e["defaultColorDecorators"]=144]="defaultColorDecorators",e[e["colorDecoratorsActivatedOn"]=145]="colorDecoratorsActivatedOn"}(_i||(_i={})),function(e){e[e["TextDefined"]=0]="TextDefined",e[e["LF"]=1]="LF",e[e["CRLF"]=2]="CRLF"}(Ci||(Ci={})),function(e){e[e["LF"]=0]="LF",e[e["CRLF"]=1]="CRLF"}(yi||(yi={})),function(e){e[e["Left"]=1]="Left",e[e["Right"]=2]="Right"}(vi||(vi={})),function(e){e[e["None"]=0]="None",e[e["Indent"]=1]="Indent",e[e["IndentOutdent"]=2]="IndentOutdent",e[e["Outdent"]=3]="Outdent"}(wi||(wi={})),function(e){e[e["Both"]=0]="Both",e[e["Right"]=1]="Right",e[e["Left"]=2]="Left",e[e["None"]=3]="None"}(Li||(Li={})),function(e){e[e["Type"]=1]="Type",e[e["Parameter"]=2]="Parameter"}(Ni||(Ni={})),function(e){e[e["Automatic"]=0]="Automatic",e[e["Explicit"]=1]="Explicit"}(Si||(Si={})),function(e){e[e["DependsOnKbLayout"]=-1]="DependsOnKbLayout",e[e["Unknown"]=0]="Unknown",e[e["Backspace"]=1]="Backspace",e[e["Tab"]=2]="Tab",e[e["Enter"]=3]="Enter",e[e["Shift"]=4]="Shift",e[e["Ctrl"]=5]="Ctrl",e[e["Alt"]=6]="Alt",e[e["PauseBreak"]=7]="PauseBreak",e[e["CapsLock"]=8]="CapsLock",e[e["Escape"]=9]="Escape",e[e["Space"]=10]="Space",e[e["PageUp"]=11]="PageUp",e[e["PageDown"]=12]="PageDown",e[e["End"]=13]="End",e[e["Home"]=14]="Home",e[e["LeftArrow"]=15]="LeftArrow",e[e["UpArrow"]=16]="UpArrow",e[e["RightArrow"]=17]="RightArrow",e[e["DownArrow"]=18]="DownArrow",e[e["Insert"]=19]="Insert",e[e["Delete"]=20]="Delete",e[e["Digit0"]=21]="Digit0",e[e["Digit1"]=22]="Digit1",e[e["Digit2"]=23]="Digit2",e[e["Digit3"]=24]="Digit3",e[e["Digit4"]=25]="Digit4",e[e["Digit5"]=26]="Digit5",e[e["Digit6"]=27]="Digit6",e[e["Digit7"]=28]="Digit7",e[e["Digit8"]=29]="Digit8",e[e["Digit9"]=30]="Digit9",e[e["KeyA"]=31]="KeyA",e[e["KeyB"]=32]="KeyB",e[e["KeyC"]=33]="KeyC",e[e["KeyD"]=34]="KeyD",e[e["KeyE"]=35]="KeyE",e[e["KeyF"]=36]="KeyF",e[e["KeyG"]=37]="KeyG",e[e["KeyH"]=38]="KeyH",e[e["KeyI"]=39]="KeyI",e[e["KeyJ"]=40]="KeyJ",e[e["KeyK"]=41]="KeyK",e[e["KeyL"]=42]="KeyL",e[e["KeyM"]=43]="KeyM",e[e["KeyN"]=44]="KeyN",e[e["KeyO"]=45]="KeyO",e[e["KeyP"]=46]="KeyP",e[e["KeyQ"]=47]="KeyQ",e[e["KeyR"]=48]="KeyR",e[e["KeyS"]=49]="KeyS",e[e["KeyT"]=50]="KeyT",e[e["KeyU"]=51]="KeyU",e[e["KeyV"]=52]="KeyV",e[e["KeyW"]=53]="KeyW",e[e["KeyX"]=54]="KeyX",e[e["KeyY"]=55]="KeyY",e[e["KeyZ"]=56]="KeyZ",e[e["Meta"]=57]="Meta",e[e["ContextMenu"]=58]="ContextMenu",e[e["F1"]=59]="F1",e[e["F2"]=60]="F2",e[e["F3"]=61]="F3",e[e["F4"]=62]="F4",e[e["F5"]=63]="F5",e[e["F6"]=64]="F6",e[e["F7"]=65]="F7",e[e["F8"]=66]="F8",e[e["F9"]=67]="F9",e[e["F10"]=68]="F10",e[e["F11"]=69]="F11",e[e["F12"]=70]="F12",e[e["F13"]=71]="F13",e[e["F14"]=72]="F14",e[e["F15"]=73]="F15",e[e["F16"]=74]="F16",e[e["F17"]=75]="F17",e[e["F18"]=76]="F18",e[e["F19"]=77]="F19",e[e["F20"]=78]="F20",e[e["F21"]=79]="F21",e[e["F22"]=80]="F22",e[e["F23"]=81]="F23",e[e["F24"]=82]="F24",e[e["NumLock"]=83]="NumLock",e[e["ScrollLock"]=84]="ScrollLock",e[e["Semicolon"]=85]="Semicolon",e[e["Equal"]=86]="Equal",e[e["Comma"]=87]="Comma",e[e["Minus"]=88]="Minus",e[e["Period"]=89]="Period",e[e["Slash"]=90]="Slash",e[e["Backquote"]=91]="Backquote",e[e["BracketLeft"]=92]="BracketLeft",e[e["Backslash"]=93]="Backslash",e[e["BracketRight"]=94]="BracketRight",e[e["Quote"]=95]="Quote",e[e["OEM_8"]=96]="OEM_8",e[e["IntlBackslash"]=97]="IntlBackslash",e[e["Numpad0"]=98]="Numpad0",e[e["Numpad1"]=99]="Numpad1",e[e["Numpad2"]=100]="Numpad2",e[e["Numpad3"]=101]="Numpad3",e[e["Numpad4"]=102]="Numpad4",e[e["Numpad5"]=103]="Numpad5",e[e["Numpad6"]=104]="Numpad6",e[e["Numpad7"]=105]="Numpad7",e[e["Numpad8"]=106]="Numpad8",e[e["Numpad9"]=107]="Numpad9",e[e["NumpadMultiply"]=108]="NumpadMultiply",e[e["NumpadAdd"]=109]="NumpadAdd",e[e["NUMPAD_SEPARATOR"]=110]="NUMPAD_SEPARATOR",e[e["NumpadSubtract"]=111]="NumpadSubtract",e[e["NumpadDecimal"]=112]="NumpadDecimal",e[e["NumpadDivide"]=113]="NumpadDivide",e[e["KEY_IN_COMPOSITION"]=114]="KEY_IN_COMPOSITION",e[e["ABNT_C1"]=115]="ABNT_C1",e[e["ABNT_C2"]=116]="ABNT_C2",e[e["AudioVolumeMute"]=117]="AudioVolumeMute",e[e["AudioVolumeUp"]=118]="AudioVolumeUp",e[e["AudioVolumeDown"]=119]="AudioVolumeDown",e[e["BrowserSearch"]=120]="BrowserSearch",e[e["BrowserHome"]=121]="BrowserHome",e[e["BrowserBack"]=122]="BrowserBack",e[e["BrowserForward"]=123]="BrowserForward",e[e["MediaTrackNext"]=124]="MediaTrackNext",e[e["MediaTrackPrevious"]=125]="MediaTrackPrevious",e[e["MediaStop"]=126]="MediaStop",e[e["MediaPlayPause"]=127]="MediaPlayPause",e[e["LaunchMediaPlayer"]=128]="LaunchMediaPlayer",e[e["LaunchMail"]=129]="LaunchMail",e[e["LaunchApp2"]=130]="LaunchApp2",e[e["Clear"]=131]="Clear",e[e["MAX_VALUE"]=132]="MAX_VALUE"}(Ei||(Ei={})),function(e){e[e["Hint"]=1]="Hint",e[e["Info"]=2]="Info",e[e["Warning"]=4]="Warning",e[e["Error"]=8]="Error"}(Ri||(Ri={})),function(e){e[e["Unnecessary"]=1]="Unnecessary",e[e["Deprecated"]=2]="Deprecated"}(Ai||(Ai={})),function(e){e[e["Inline"]=1]="Inline",e[e["Gutter"]=2]="Gutter"}(xi||(xi={})),function(e){e[e["UNKNOWN"]=0]="UNKNOWN",e[e["TEXTAREA"]=1]="TEXTAREA",e[e["GUTTER_GLYPH_MARGIN"]=2]="GUTTER_GLYPH_MARGIN",e[e["GUTTER_LINE_NUMBERS"]=3]="GUTTER_LINE_NUMBERS",e[e["GUTTER_LINE_DECORATIONS"]=4]="GUTTER_LINE_DECORATIONS",e[e["GUTTER_VIEW_ZONE"]=5]="GUTTER_VIEW_ZONE",e[e["CONTENT_TEXT"]=6]="CONTENT_TEXT",e[e["CONTENT_EMPTY"]=7]="CONTENT_EMPTY",e[e["CONTENT_VIEW_ZONE"]=8]="CONTENT_VIEW_ZONE",e[e["CONTENT_WIDGET"]=9]="CONTENT_WIDGET",e[e["OVERVIEW_RULER"]=10]="OVERVIEW_RULER",e[e["SCROLLBAR"]=11]="SCROLLBAR",e[e["OVERLAY_WIDGET"]=12]="OVERLAY_WIDGET",e[e["OUTSIDE_EDITOR"]=13]="OUTSIDE_EDITOR"}(Mi||(Mi={})),function(e){e[e["TOP_RIGHT_CORNER"]=0]="TOP_RIGHT_CORNER",e[e["BOTTOM_RIGHT_CORNER"]=1]="BOTTOM_RIGHT_CORNER",e[e["TOP_CENTER"]=2]="TOP_CENTER"}(ki||(ki={})),function(e){e[e["Left"]=1]="Left",e[e["Center"]=2]="Center",e[e["Right"]=4]="Right",e[e["Full"]=7]="Full"}(Oi||(Oi={})),function(e){e[e["Left"]=0]="Left",e[e["Right"]=1]="Right",e[e["None"]=2]="None",e[e["LeftOfInjectedText"]=3]="LeftOfInjectedText",e[e["RightOfInjectedText"]=4]="RightOfInjectedText"}(Ti||(Ti={})),function(e){e[e["Off"]=0]="Off",e[e["On"]=1]="On",e[e["Relative"]=2]="Relative",e[e["Interval"]=3]="Interval",e[e["Custom"]=4]="Custom"}(Ii||(Ii={})),function(e){e[e["None"]=0]="None",e[e["Text"]=1]="Text",e[e["Blocks"]=2]="Blocks"}(Pi||(Pi={})),function(e){e[e["Smooth"]=0]="Smooth",e[e["Immediate"]=1]="Immediate"}(Di||(Di={})),function(e){e[e["Auto"]=1]="Auto",e[e["Hidden"]=2]="Hidden",e[e["Visible"]=3]="Visible"}(Fi||(Fi={})),function(e){e[e["LTR"]=0]="LTR",e[e["RTL"]=1]="RTL"}(Ki||(Ki={})),function(e){e[e["Invoke"]=1]="Invoke",e[e["TriggerCharacter"]=2]="TriggerCharacter",e[e["ContentChange"]=3]="ContentChange"}(Vi||(Vi={})),function(e){e[e["File"]=0]="File",e[e["Module"]=1]="Module",e[e["Namespace"]=2]="Namespace",e[e["Package"]=3]="Package",e[e["Class"]=4]="Class",e[e["Method"]=5]="Method",e[e["Property"]=6]="Property",e[e["Field"]=7]="Field",e[e["Constructor"]=8]="Constructor",e[e["Enum"]=9]="Enum",e[e["Interface"]=10]="Interface",e[e["Function"]=11]="Function",e[e["Variable"]=12]="Variable",e[e["Constant"]=13]="Constant",e[e["String"]=14]="String",e[e["Number"]=15]="Number",e[e["Boolean"]=16]="Boolean",e[e["Array"]=17]="Array",e[e["Object"]=18]="Object",e[e["Key"]=19]="Key",e[e["Null"]=20]="Null",e[e["EnumMember"]=21]="EnumMember",e[e["Struct"]=22]="Struct",e[e["Event"]=23]="Event",e[e["Operator"]=24]="Operator",e[e["TypeParameter"]=25]="TypeParameter"}(qi||(qi={})),function(e){e[e["Deprecated"]=1]="Deprecated"}(Bi||(Bi={})),function(e){e[e["Hidden"]=0]="Hidden",e[e["Blink"]=1]="Blink",e[e["Smooth"]=2]="Smooth",e[e["Phase"]=3]="Phase",e[e["Expand"]=4]="Expand",e[e["Solid"]=5]="Solid"}(Ui||(Ui={})),function(e){e[e["Line"]=1]="Line",e[e["Block"]=2]="Block",e[e["Underline"]=3]="Underline",e[e["LineThin"]=4]="LineThin",e[e["BlockOutline"]=5]="BlockOutline",e[e["UnderlineThin"]=6]="UnderlineThin"}(Wi||(Wi={})),function(e){e[e["AlwaysGrowsWhenTypingAtEdges"]=0]="AlwaysGrowsWhenTypingAtEdges",e[e["NeverGrowsWhenTypingAtEdges"]=1]="NeverGrowsWhenTypingAtEdges",e[e["GrowsOnlyWhenTypingBefore"]=2]="GrowsOnlyWhenTypingBefore",e[e["GrowsOnlyWhenTypingAfter"]=3]="GrowsOnlyWhenTypingAfter"}(Hi||(Hi={})),function(e){e[e["None"]=0]="None",e[e["Same"]=1]="Same",e[e["Indent"]=2]="Indent",e[e["DeepIndent"]=3]="DeepIndent"}($i||($i={}));class zi{static chord(e,t){return Wn(e,t)}}function ji(){return{editor:void 0,languages:void 0,CancellationTokenSource:Mn,Emitter:K,KeyCode:Ei,KeyMod:zi,Position:en,Range:tn,Selection:Hn,SelectionDirection:Ki,MarkerSeverity:Ri,MarkerTag:Ai,Uri:Wt,Token:ni}}zi.CtrlCmd=2048,zi.Shift=1024,zi.Alt=512,zi.WinCtrl=256;class Gi extends bn{constructor(e){super(0);for(let t=0,n=e.length;t(t.hasOwnProperty(n)||(t[n]=e(n)),t[n])}Qi((e=>new Gi(e)));var Yi,Ji,Xi,Zi;(function(e){e[e["Left"]=1]="Left",e[e["Center"]=2]="Center",e[e["Right"]=4]="Right",e[e["Full"]=7]="Full"})(Yi||(Yi={})),function(e){e[e["Left"]=1]="Left",e[e["Right"]=2]="Right"}(Ji||(Ji={})),function(e){e[e["Inline"]=1]="Inline",e[e["Gutter"]=2]="Gutter"}(Xi||(Xi={})),function(e){e[e["Both"]=0]="Both",e[e["Right"]=1]="Right",e[e["Left"]=2]="Left",e[e["None"]=3]="None"}(Zi||(Zi={}));function er(e,t,n,i,r){if(0===i)return!0;const s=t.charCodeAt(i-1);if(0!==e.get(s))return!0;if(13===s||10===s)return!0;if(r>0){const n=t.charCodeAt(i);if(0!==e.get(n))return!0}return!1}function tr(e,t,n,i,r){if(i+r===n)return!0;const s=t.charCodeAt(i+r);if(0!==e.get(s))return!0;if(13===s||10===s)return!0;if(r>0){const n=t.charCodeAt(i+r-1);if(0!==e.get(n))return!0}return!1}function nr(e,t,n,i,r){return er(e,t,n,i,r)&&tr(e,t,n,i,r)}class ir{constructor(e,t){this._wordSeparators=e,this._searchRegex=t,this._prevMatchStartIndex=-1,this._prevMatchLength=0}reset(e){this._searchRegex.lastIndex=e,this._prevMatchStartIndex=-1,this._prevMatchLength=0}next(e){const t=e.length;let n;do{if(this._prevMatchStartIndex+this._prevMatchLength===t)return null;if(n=this._searchRegex.exec(e),!n)return null;const i=n.index,r=n[0].length;if(i===this._prevMatchStartIndex&&r===this._prevMatchLength){if(0===r){ke(e,t,this._searchRegex.lastIndex)>65535?this._searchRegex.lastIndex+=2:this._searchRegex.lastIndex+=1;continue}return null}if(this._prevMatchStartIndex=i,this._prevMatchLength=r,!this._wordSeparators||nr(this._wordSeparators,e,t,i,r))return n}while(n);return null}}function rr(e,t="Unreachable"){throw new Error(t)}function sr(e){e()||(e(),i(new u("Assertion Failed")))}function or(e,t){let n=0;while(n0){const n=t.charCodeAt(e-1);Ae(n)&&e--}if(i+1=t){c=!0;break e}u.push(new tn(f,e+1,f,i+1))}}}while(h)}return{ranges:u,hasMore:c,ambiguousCharacterCount:d,invisibleCharacterCount:g,nonBasicAsciiCharacterCount:m}}static computeUnicodeHighlightReason(e,t){const n=new ur(t),i=n.shouldHighlightNonBasicASCII(e,null);switch(i){case 0:return null;case 2:return{kind:1};case 3:{const i=e.codePointAt(0),r=n.ambiguousCharacters.getPrimaryConfusable(i),s=De.getLocales().filter((e=>!De.getInstance(new Set([...t.allowedLocales,e])).isAmbiguous(i)));return{kind:0,confusableWith:String.fromCodePoint(r),notAmbiguousInLocales:s}}case 1:return{kind:2}}}}function lr(e,t){const n=`[${Le(e.map((e=>String.fromCodePoint(e))).join(""))}]`;return n}class ur{constructor(e){this.options=e,this.allowedCodePoints=new Set(e.allowedCodePoints),this.ambiguousCharacters=De.getInstance(new Set(e.allowedLocales))}getCandidateCodePoints(){if(this.options.nonBasicASCII)return"allNonBasicAscii";const e=new Set;if(this.options.invisibleCharacters)for(const t of Fe.codePoints)hr(String.fromCodePoint(t))||e.add(t);if(this.options.ambiguousCharacters)for(const t of this.ambiguousCharacters.getConfusableCodePoints())e.add(t);for(const t of this.allowedCodePoints)e.delete(t);return e}shouldHighlightNonBasicASCII(e,t){const n=e.codePointAt(0);if(this.allowedCodePoints.has(n))return 0;if(this.options.nonBasicASCII)return 1;let i=!1,r=!1;if(t)for(const s of t){const e=s.codePointAt(0),t=Te(s);i=i||t,t||this.ambiguousCharacters.isAmbiguous(e)||Fe.isInvisibleCharacter(e)||(r=!0)}return!i&&r?0:this.options.invisibleCharacters&&!hr(e)&&Fe.isInvisibleCharacter(n)?2:this.options.ambiguousCharacters&&this.ambiguousCharacters.isAmbiguous(n)?3:0}}function hr(e){return" "===e||"\n"===e||"\t"===e}class cr{static fromRange(e){return new cr(e.startLineNumber,e.endLineNumber)}static subtract(e,t){return t?e.startLineNumber=o.startLineNumber?s=new cr(s.startLineNumber,Math.max(s.endLineNumberExclusive,o.endLineNumberExclusive)):(n.push(s),s=o)}return null!==s&&n.push(s),n}static ofLength(e,t){return new cr(e,e+t)}static deserialize(e){return new cr(e[0],e[1])}constructor(e,t){if(e>t)throw new u(`startLineNumber ${e} cannot be after endLineNumberExclusive ${t}`);this.startLineNumber=e,this.endLineNumberExclusive=t}contains(e){return this.startLineNumber<=e&&e${this.modifiedRange.toString()}}`}get changedLineCount(){return Math.max(this.originalRange.length,this.modifiedRange.length)}flip(){var e;return new gr(this.modifiedRange,this.originalRange,null===(e=this.innerChanges)||void 0===e?void 0:e.map((e=>e.flip())))}}class mr{constructor(e,t){this.originalRange=e,this.modifiedRange=t}toString(){return`{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`}flip(){return new mr(this.modifiedRange,this.originalRange)}}class fr{constructor(e,t){this.original=e,this.modified=t}toString(){return`{${this.original.toString()}->${this.modified.toString()}}`}flip(){return new fr(this.modified,this.original)}}class pr{constructor(e,t){this.lineRangeMapping=e,this.changes=t}flip(){return new pr(this.lineRangeMapping.flip(),this.changes.map((e=>e.flip())))}}const br=3;class _r{computeDiff(e,t,n){var i;const r=new Sr(e,t,{maxComputationTime:n.maxComputationTimeMs,shouldIgnoreTrimWhitespace:n.ignoreTrimWhitespace,shouldComputeCharChanges:!0,shouldMakePrettyDiff:!0,shouldPostProcessCharChanges:!0}),s=r.computeDiff(),o=[];let a=null;for(const l of s.changes){let e,t;e=0===l.originalEndLineNumber?new cr(l.originalStartLineNumber+1,l.originalStartLineNumber+1):new cr(l.originalStartLineNumber,l.originalEndLineNumber+1),t=0===l.modifiedEndLineNumber?new cr(l.modifiedStartLineNumber+1,l.modifiedStartLineNumber+1):new cr(l.modifiedStartLineNumber,l.modifiedEndLineNumber+1);let n=new gr(e,t,null===(i=l.charChanges)||void 0===i?void 0:i.map((e=>new mr(new tn(e.originalStartLineNumber,e.originalStartColumn,e.originalEndLineNumber,e.originalEndColumn),new tn(e.modifiedStartLineNumber,e.modifiedStartColumn,e.modifiedEndLineNumber,e.modifiedEndColumn)))));a&&(a.modifiedRange.endLineNumberExclusive!==n.modifiedRange.startLineNumber&&a.originalRange.endLineNumberExclusive!==n.originalRange.startLineNumber||(n=new gr(a.originalRange.join(n.originalRange),a.modifiedRange.join(n.modifiedRange),a.innerChanges&&n.innerChanges?a.innerChanges.concat(n.innerChanges):void 0),o.pop())),o.push(n),a=n}return sr((()=>or(o,((e,t)=>t.originalRange.startLineNumber-e.originalRange.endLineNumberExclusive===t.modifiedRange.startLineNumber-e.modifiedRange.endLineNumberExclusive&&e.originalRange.endLineNumberExclusive(10===e?"\\n":String.fromCharCode(e))+`-(${this._lineNumbers[t]},${this._columns[t]})`)).join(", ")+"]"}_assertIndex(e,t){if(e<0||e>=t.length)throw new Error("Illegal index")}getElements(){return this._charCodes}getStartLineNumber(e){return e>0&&e===this._lineNumbers.length?this.getEndLineNumber(e-1):(this._assertIndex(e,this._lineNumbers),this._lineNumbers[e])}getEndLineNumber(e){return-1===e?this.getStartLineNumber(e+1):(this._assertIndex(e,this._lineNumbers),10===this._charCodes[e]?this._lineNumbers[e]+1:this._lineNumbers[e])}getStartColumn(e){return e>0&&e===this._columns.length?this.getEndColumn(e-1):(this._assertIndex(e,this._columns),this._columns[e])}getEndColumn(e){return-1===e?this.getStartColumn(e+1):(this._assertIndex(e,this._columns),10===this._charCodes[e]?1:this._columns[e]+1)}}class wr{constructor(e,t,n,i,r,s,o,a){this.originalStartLineNumber=e,this.originalStartColumn=t,this.originalEndLineNumber=n,this.originalEndColumn=i,this.modifiedStartLineNumber=r,this.modifiedStartColumn=s,this.modifiedEndLineNumber=o,this.modifiedEndColumn=a}static createFromDiffChange(e,t,n){const i=t.getStartLineNumber(e.originalStart),r=t.getStartColumn(e.originalStart),s=t.getEndLineNumber(e.originalStart+e.originalLength-1),o=t.getEndColumn(e.originalStart+e.originalLength-1),a=n.getStartLineNumber(e.modifiedStart),l=n.getStartColumn(e.modifiedStart),u=n.getEndLineNumber(e.modifiedStart+e.modifiedLength-1),h=n.getEndColumn(e.modifiedStart+e.modifiedLength-1);return new wr(i,r,s,o,a,l,u,h)}}function Lr(e){if(e.length<=1)return e;const t=[e[0]];let n=t[0];for(let i=1,r=e.length;i0&&t.originalLength<20&&t.modifiedLength>0&&t.modifiedLength<20&&r()){const s=n.createCharSequence(e,t.originalStart,t.originalStart+t.originalLength-1),a=i.createCharSequence(e,t.modifiedStart,t.modifiedStart+t.modifiedLength-1);if(s.getElements().length>0&&a.getElements().length>0){let e=Cr(s,a,r,!0).changes;o&&(e=Lr(e)),c=[];for(let t=0,n=e.length;t1&&o>1){const i=e.charCodeAt(n-2),r=t.charCodeAt(o-2);if(i!==r)break;n--,o--}(n>1||o>1)&&this._pushTrimWhitespaceCharChange(i,r+1,1,n,s+1,1,o)}{let n=Rr(e,1),o=Rr(t,1);const a=e.length+1,l=t.length+1;while(n!0;const t=Date.now();return()=>Date.now()-tt))return new xr(e,t)}constructor(e,t){if(this.start=e,this.endExclusive=t,e>t)throw new u(`Invalid range: ${this.toString()}`)}get isEmpty(){return this.start===this.endExclusive}delta(e){return new xr(this.start+e,this.endExclusive+e)}get length(){return this.endExclusive-this.start}toString(){return`[${this.start}, ${this.endExclusive})`}equals(e){return this.start===e.start&&this.endExclusive===e.endExclusive}containsRange(e){return this.start<=e.start&&e.endExclusive<=this.endExclusive}contains(e){return this.start<=e&&e ${this.seq2Range}`}join(e){return new kr(this.seq1Range.join(e.seq1Range),this.seq2Range.join(e.seq2Range))}delta(e){return 0===e?this:new kr(this.seq1Range.delta(e),this.seq2Range.delta(e))}}class Or{isValid(){return!0}}Or.instance=new Or;class Tr{constructor(e){if(this.timeout=e,this.startTime=Date.now(),this.valid=!0,e<=0)throw new u("timeout must be positive")}isValid(){const e=Date.now()-this.startTime0&&a>0&&3===s.get(g-1,a-1)&&(h+=o.get(g-1,a-1)),h+=i?i(g,a):1):h=-1;const c=Math.max(l,u,h);if(c===h){const e=g>0&&a>0?o.get(g-1,a-1):0;o.set(g,a,e+1),s.set(g,a,3)}else c===l?(o.set(g,a,0),s.set(g,a,1)):c===u&&(o.set(g,a,0),s.set(g,a,2));r.set(g,a,c)}const a=[];let l=e.length,u=t.length;function h(e,t){e+1===l&&t+1===u||a.push(new kr(new xr(e+1,l),new xr(t+1,u))),l=e,u=t}let c=e.length-1,d=t.length-1;while(c>=0&&d>=0)3===s.get(c,d)?(h(c,d),c--,d--):1===s.get(c,d)?c--:d--;return h(-1,-1),a.reverse(),new Mr(a,!1)}}function Dr(e,t,n){let i=n;return i=Vr(e,t,i),i=qr(e,t,i),i}function Fr(e,t,n){const i=[];for(const r of n){const e=i[i.length-1];e?r.seq1Range.start-e.seq1Range.endExclusive<=2||r.seq2Range.start-e.seq2Range.endExclusive<=2?i[i.length-1]=new kr(e.seq1Range.join(r.seq1Range),e.seq2Range.join(r.seq2Range)):i.push(r):i.push(r)}return i}function Kr(e,t,n){let i=n;if(0===i.length)return i;let r,s=0;do{r=!1;const o=[i[0]];for(let a=1;a5||r.length>500)return!1;const o=e.getText(r).trim();if(o.length>20||o.split(/\r\n|\r|\n/).length>1)return!1;const a=e.countLinesIn(n.seq1Range),h=n.seq1Range.length,c=t.countLinesIn(n.seq2Range),d=n.seq2Range.length,g=e.countLinesIn(i.seq1Range),m=i.seq1Range.length,f=t.countLinesIn(i.seq2Range),p=i.seq2Range.length,b=130;function _(e){return Math.min(e,b)}return Math.pow(Math.pow(_(40*a+h),1.5)+Math.pow(_(40*c+d),1.5),1.5)+Math.pow(Math.pow(_(40*g+m),1.5)+Math.pow(_(40*f+p),1.5),1.5)>1.3*Math.pow(Math.pow(b,1.5),1.5)}const c=h(u,l);c?(r=!0,o[o.length-1]=o[o.length-1].join(l)):o.push(l)}i=o}while(s++<10&&r);return i}function Vr(e,t,n){if(0===n.length)return n;const i=[];i.push(n[0]);for(let s=1;s0&&(o=o.delta(a))}r.push(o)}return i.length>0&&r.push(i[i.length-1]),r}function qr(e,t,n){if(!e.getBoundaryScore||!t.getBoundaryScore)return n;for(let i=0;i0?n[i-1]:void 0,s=n[i],o=i+1=i.start&&e.seq2Range.start-o>=r.start&&n.getElement(e.seq2Range.start-o)===n.getElement(e.seq2Range.endExclusive-o)&&ou&&(u=o,l=h)}return e.delta(l)}class Ur{compute(e,t,n=Or.instance){if(0===e.length||0===t.length)return Mr.trivial(e,t);function i(n,i){while(ne.length||c>t.length)continue;const d=i(h,c);s.set(a,d);const g=h===n?o.get(a+1):o.get(a-1);if(o.set(a,d!==h?new Wr(g,h,c,d-h):g),s.get(a)===e.length&&s.get(a)-a===t.length)break e}}let l=o.get(a);const u=[];let h=e.length,c=t.length;while(1){const e=l?l.x+l.length:0,t=l?l.y+l.length:0;if(e===h&&t===c||u.push(new kr(new xr(e,h),new xr(t,c))),!l)break;h=l.x,c=l.y,l=l.prev}return u.reverse(),new Mr(u,!1)}}class Wr{constructor(e,t,n,i){this.prev=e,this.x=t,this.y=n,this.length=i}}class Hr{constructor(){this.positiveArr=new Int32Array(10),this.negativeArr=new Int32Array(10)}get(e){return e<0?(e=-e-1,this.negativeArr[e]):this.positiveArr[e]}set(e,t){if(e<0){if(e=-e-1,e>=this.negativeArr.length){const e=this.negativeArr;this.negativeArr=new Int32Array(2*e.length),this.negativeArr.set(e)}this.negativeArr[e]=t}else{if(e>=this.positiveArr.length){const e=this.positiveArr;this.positiveArr=new Int32Array(2*e.length),this.positiveArr.set(e)}this.positiveArr[e]=t}}}class $r{constructor(){this.positiveArr=[],this.negativeArr=[]}get(e){return e<0?(e=-e-1,this.negativeArr[e]):this.positiveArr[e]}set(e,t){e<0?(e=-e-1,this.negativeArr[e]=t):this.positiveArr[e]=t}}class zr{constructor(){this.dynamicProgrammingDiffing=new Pr,this.myersDiffingAlgorithm=new Ur}computeDiff(e,t,n){if(1===e.length&&0===e[0].length||1===t.length&&0===t[0].length)return{changes:[new gr(new cr(1,e.length+1),new cr(1,t.length+1),[new mr(new tn(1,1,e.length,e[0].length+1),new tn(1,1,t.length,t[0].length+1))])],hitTimeout:!1,moves:[]};const i=0===n.maxComputationTimeMs?Or.instance:new Tr(n.maxComputationTimeMs),r=!n.ignoreTrimWhitespace,s=new Map;function o(e){let t=s.get(e);return void 0===t&&(t=s.size,s.set(e,t)),t}const a=e.map((e=>o(e.trim()))),l=t.map((e=>o(e.trim()))),u=new Xr(a,e),h=new Xr(l,t),c=(()=>u.length+h.length<1500?this.dynamicProgrammingDiffing.compute(u,h,i,((n,i)=>e[n]===t[i]?0===t[i].length?.1:1+Math.log(1+t[i].length):.99)):this.myersDiffingAlgorithm.compute(u,h))();let d=c.diffs,g=c.hitTimeout;d=Dr(u,h,d);const m=[],f=n=>{if(r)for(let s=0;sy.seq1Range.start-p===y.seq2Range.start-b));const n=y.seq1Range.start-p;f(n),p=y.seq1Range.endExclusive,b=y.seq2Range.endExclusive;const s=this.refineDiff(e,t,y,i,r);s.hitTimeout&&(g=!0);for(const e of s.mappings)m.push(e)}f(e.length-p);const _=Qr(m,e,t),C=[];if(n.computeMoves){const n=_.filter((e=>e.modifiedRange.isEmpty&&e.originalRange.length>=3)).map((t=>new ls(t.originalRange,e))),s=new Set(_.filter((e=>e.originalRange.isEmpty&&e.modifiedRange.length>=3)).map((e=>new ls(e.modifiedRange,t))));for(const o of n){let n,a=-1;for(const e of s){const t=o.computeSimilarity(e);t>a&&(a=t,n=e)}if(a>.9&&n){const a=this.refineDiff(e,t,new kr(new xr(o.range.startLineNumber-1,o.range.endLineNumberExclusive-1),new xr(n.range.startLineNumber-1,n.range.endLineNumberExclusive-1)),i,r),l=Qr(a.mappings,e,t,!0);s.delete(n),C.push(new pr(new fr(o.range,n.range),l))}}}return sr((()=>{function n(e,t){if(e.lineNumber<1||e.lineNumber>t.length)return!1;const n=t[e.lineNumber-1];return!(e.column<1||e.column>n.length+1)}function i(e,t){return!(e.startLineNumber<1||e.startLineNumber>t.length+1)&&!(e.endLineNumberExclusive<1||e.endLineNumberExclusive>t.length+1)}for(const r of _){if(!r.innerChanges)return!1;for(const i of r.innerChanges){const r=n(i.modifiedRange.getStartPosition(),t)&&n(i.modifiedRange.getEndPosition(),t)&&n(i.originalRange.getStartPosition(),e)&&n(i.originalRange.getEndPosition(),e);if(!r)return!1}if(!i(r.modifiedRange,t)||!i(r.originalRange,e))return!1}return!0})),new dr(_,C,g)}refineDiff(e,t,n,i,r){const s=new es(e,n.seq1Range,r),o=new es(t,n.seq2Range,r),a=s.length+o.length<500?this.dynamicProgrammingDiffing.compute(s,o,i):this.myersDiffingAlgorithm.compute(s,o,i);let l=a.diffs;l=Dr(s,o,l),l=jr(s,o,l),l=Fr(s,o,l),l=Kr(s,o,l);const u=l.map((e=>new mr(s.translateRange(e.seq1Range),o.translateRange(e.seq2Range))));return{mappings:u,hitTimeout:a.hitTimeout}}}function jr(e,t,n){const i=[];let r;function s(){if(!r)return;const e=r.s1Range.length-r.deleted;r.s2Range.length,r.added;Math.max(r.deleted,r.added)+(r.count-1)>e&&i.push(new kr(r.s1Range,r.s2Range)),r=void 0}for(const a of n){function l(e,t){var n,i,o,l;if(!r||!r.s1Range.containsRange(e)||!r.s2Range.containsRange(t))if(!r||r.s1Range.endExclusive0||t.length>0){const i=e[0],r=t[0];let s;s=i&&(!r||i.seq1Range.start0&&n[n.length-1].seq1Range.endExclusive>=s.seq1Range.start?n[n.length-1]=n[n.length-1].join(s):n.push(s)}return n}function Qr(e,t,n,i=!1){const r=[];for(const s of Jr(e.map((e=>Yr(e,t,n))),((e,t)=>e.originalRange.overlapOrTouch(t.originalRange)||e.modifiedRange.overlapOrTouch(t.modifiedRange)))){const e=s[0],t=s[s.length-1];r.push(new gr(e.originalRange.join(t.originalRange),e.modifiedRange.join(t.modifiedRange),s.map((e=>e.innerChanges[0]))))}return sr((()=>!(!i&&r.length>0&&r[0].originalRange.startLineNumber!==r[0].modifiedRange.startLineNumber)&&or(r,((e,t)=>t.originalRange.startLineNumber-e.originalRange.endLineNumberExclusive===t.modifiedRange.startLineNumber-e.modifiedRange.endLineNumberExclusive&&e.originalRange.endLineNumberExclusive=n[e.modifiedRange.startLineNumber-1].length&&e.originalRange.startColumn-1>=t[e.originalRange.startLineNumber-1].length&&e.originalRange.startLineNumber<=e.originalRange.endLineNumber+r&&e.modifiedRange.startLineNumber<=e.modifiedRange.endLineNumber+r&&(i=1);const s=new cr(e.originalRange.startLineNumber+i,e.originalRange.endLineNumber+1+r),o=new cr(e.modifiedRange.startLineNumber+i,e.modifiedRange.endLineNumber+1+r);return new gr(s,o,[e])}function*Jr(e,t){let n,i;for(const r of e)void 0!==i&&t(i,r)?n.push(r):(n&&(yield n),n=[r]),i=r;n&&(yield n)}class Xr{constructor(e,t){this.trimmedHash=e,this.lines=t}getElement(e){return this.trimmedHash[e]}get length(){return this.trimmedHash.length}getBoundaryScore(e){const t=0===e?0:Zr(this.lines[e-1]),n=e===this.lines.length?0:Zr(this.lines[e]);return 1e3-(t+n)}}function Zr(e){let t=0;while(t0&&t.endExclusive>=e.length&&(t=new xr(t.start-1,t.endExclusive),i=!0),this.lineRange=t;for(let r=this.lineRange.start;rString.fromCharCode(e))).join("")}getElement(e){return this.elements[e]}get length(){return this.elements.length}getBoundaryScore(e){const t=rs(e>0?this.elements[e-1]:-1),n=rs(ee?n=i:t=i+1}const i=0===t?0:this.firstCharOffsetByLineMinusOne[t-1];return new en(this.lineRange.start+t+1,e-i+1+this.offsetByLine[t])}translateRange(e){return tn.fromPositions(this.translateOffset(e.start),this.translateOffset(e.endExclusive))}findWordContaining(e){if(e<0||e>=this.elements.length)return;if(!ts(this.elements[e]))return;let t=e;while(t>0&&ts(this.elements[t-1]))t--;let n=e;while(n=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57}const ns={[0]:0,[1]:0,[2]:0,[3]:10,[4]:2,[5]:3,[6]:10,[7]:10};function is(e){return ns[e]}function rs(e){return 10===e?7:13===e?6:ss(e)?5:e>=97&&e<=122?0:e>=65&&e<=90?1:e>=48&&e<=57?2:-1===e?3:4}function ss(e){return 32===e||9===e}const os=new Map;function as(e){let t=os.get(e);return void 0===t&&(t=os.size,os.set(e,t)),t}class ls{constructor(e,t){this.range=e,this.lines=t,this.histogram=[];let n=0;for(let i=e.startLineNumber-1;inew _r,getAdvanced:()=>new zr};function hs(e,t){const n=Math.pow(10,t);return Math.round(e*n)/n}class cs{constructor(e,t,n,i=1){this._rgbaBrand=void 0,this.r=0|Math.min(255,Math.max(0,e)),this.g=0|Math.min(255,Math.max(0,t)),this.b=0|Math.min(255,Math.max(0,n)),this.a=hs(Math.max(Math.min(1,i),0),3)}static equals(e,t){return e.r===t.r&&e.g===t.g&&e.b===t.b&&e.a===t.a}}class ds{constructor(e,t,n,i){this._hslaBrand=void 0,this.h=0|Math.max(Math.min(360,e),0),this.s=hs(Math.max(Math.min(1,t),0),3),this.l=hs(Math.max(Math.min(1,n),0),3),this.a=hs(Math.max(Math.min(1,i),0),3)}static equals(e,t){return e.h===t.h&&e.s===t.s&&e.l===t.l&&e.a===t.a}static fromRGBA(e){const t=e.r/255,n=e.g/255,i=e.b/255,r=e.a,s=Math.max(t,n,i),o=Math.min(t,n,i);let a=0,l=0;const u=(o+s)/2,h=s-o;if(h>0){switch(l=Math.min(u<=.5?h/(2*u):h/(2-2*u),1),s){case t:a=(n-i)/h+(n1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}static toRGBA(e){const t=e.h/360,{s:n,l:i,a:r}=e;let s,o,a;if(0===n)s=o=a=i;else{const e=i<.5?i*(1+n):i+n-i*n,r=2*i-e;s=ds._hue2rgb(r,e,t+1/3),o=ds._hue2rgb(r,e,t),a=ds._hue2rgb(r,e,t-1/3)}return new cs(Math.round(255*s),Math.round(255*o),Math.round(255*a),r)}}class gs{constructor(e,t,n,i){this._hsvaBrand=void 0,this.h=0|Math.max(Math.min(360,e),0),this.s=hs(Math.max(Math.min(1,t),0),3),this.v=hs(Math.max(Math.min(1,n),0),3),this.a=hs(Math.max(Math.min(1,i),0),3)}static equals(e,t){return e.h===t.h&&e.s===t.s&&e.v===t.v&&e.a===t.a}static fromRGBA(e){const t=e.r/255,n=e.g/255,i=e.b/255,r=Math.max(t,n,i),s=Math.min(t,n,i),o=r-s,a=0===r?0:o/r;let l;return l=0===o?0:r===t?((n-i)/o%6+6)%6:r===n?(i-t)/o+2:(t-n)/o+4,new gs(Math.round(60*l),a,r,e.a)}static toRGBA(e){const{h:t,s:n,v:i,a:r}=e,s=i*n,o=s*(1-Math.abs(t/60%2-1)),a=i-s;let[l,u,h]=[0,0,0];return t<60?(l=s,u=o):t<120?(l=o,u=s):t<180?(u=s,h=o):t<240?(u=o,h=s):t<300?(l=o,h=s):t<=360&&(l=s,h=o),l=Math.round(255*(l+a)),u=Math.round(255*(u+a)),h=Math.round(255*(h+a)),new cs(l,u,h,r)}}class ms{static fromHex(e){return ms.Format.CSS.parseHex(e)||ms.red}static equals(e,t){return!e&&!t||!(!e||!t)&&e.equals(t)}get hsla(){return this._hsla?this._hsla:ds.fromRGBA(this.rgba)}get hsva(){return this._hsva?this._hsva:gs.fromRGBA(this.rgba)}constructor(e){if(!e)throw new Error("Color needs a value");if(e instanceof cs)this.rgba=e;else if(e instanceof ds)this._hsla=e,this.rgba=ds.toRGBA(e);else{if(!(e instanceof gs))throw new Error("Invalid color ctor argument");this._hsva=e,this.rgba=gs.toRGBA(e)}}equals(e){return!!e&&cs.equals(this.rgba,e.rgba)&&ds.equals(this.hsla,e.hsla)&&gs.equals(this.hsva,e.hsva)}getRelativeLuminance(){const e=ms._relativeLuminanceForComponent(this.rgba.r),t=ms._relativeLuminanceForComponent(this.rgba.g),n=ms._relativeLuminanceForComponent(this.rgba.b),i=.2126*e+.7152*t+.0722*n;return hs(i,4)}static _relativeLuminanceForComponent(e){const t=e/255;return t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)}isLighter(){const e=(299*this.rgba.r+587*this.rgba.g+114*this.rgba.b)/1e3;return e>=128}isLighterThan(e){const t=this.getRelativeLuminance(),n=e.getRelativeLuminance();return t>n}isDarkerThan(e){const t=this.getRelativeLuminance(),n=e.getRelativeLuminance();return t0)for(const r of i){const n=r.filter((e=>void 0!==e)),i=n[1],s=n[2];if(!s)continue;let o;if("rgb"===i){const t=/^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*\)$/gm;o=Cs(bs(e,r),vs(s,t),!1)}else if("rgba"===i){const t=/^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm;o=Cs(bs(e,r),vs(s,t),!0)}else if("hsl"===i){const t=/^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*\)$/gm;o=ys(bs(e,r),vs(s,t),!1)}else if("hsla"===i){const t=/^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm;o=ys(bs(e,r),vs(s,t),!0)}else"#"===i&&(o=_s(bs(e,r),i+s));o&&t.push(o)}return t}function Ls(e){return e&&"function"===typeof e.getValue&&"function"===typeof e.positionAt?ws(e):[]}ms.white=new ms(new cs(255,255,255,1)),ms.black=new ms(new cs(0,0,0,1)),ms.red=new ms(new cs(255,0,0,1)),ms.blue=new ms(new cs(0,0,255,1)),ms.green=new ms(new cs(0,255,0,1)),ms.cyan=new ms(new cs(0,255,255,1)),ms.lightgrey=new ms(new cs(211,211,211,1)),ms.transparent=new ms(new cs(0,0,0,0)),function(e){let t;(function(t){let n;(function(t){function n(t){return 1===t.rgba.a?`rgb(${t.rgba.r}, ${t.rgba.g}, ${t.rgba.b})`:e.Format.CSS.formatRGBA(t)}function i(e){return`rgba(${e.rgba.r}, ${e.rgba.g}, ${e.rgba.b}, ${+e.rgba.a.toFixed(2)})`}function r(t){return 1===t.hsla.a?`hsl(${t.hsla.h}, ${(100*t.hsla.s).toFixed(2)}%, ${(100*t.hsla.l).toFixed(2)}%)`:e.Format.CSS.formatHSLA(t)}function s(e){return`hsla(${e.hsla.h}, ${(100*e.hsla.s).toFixed(2)}%, ${(100*e.hsla.l).toFixed(2)}%, ${e.hsla.a.toFixed(2)})`}function o(e){const t=e.toString(16);return 2!==t.length?"0"+t:t}function a(e){return`#${o(e.rgba.r)}${o(e.rgba.g)}${o(e.rgba.b)}`}function l(t,n=!1){return n&&1===t.rgba.a?e.Format.CSS.formatHex(t):`#${o(t.rgba.r)}${o(t.rgba.g)}${o(t.rgba.b)}${o(Math.round(255*t.rgba.a))}`}function u(t){return t.isOpaque()?e.Format.CSS.formatHex(t):e.Format.CSS.formatRGBA(t)}function h(t){const n=t.length;if(0===n)return null;if(35!==t.charCodeAt(0))return null;if(7===n){const n=16*c(t.charCodeAt(1))+c(t.charCodeAt(2)),i=16*c(t.charCodeAt(3))+c(t.charCodeAt(4)),r=16*c(t.charCodeAt(5))+c(t.charCodeAt(6));return new e(new cs(n,i,r,1))}if(9===n){const n=16*c(t.charCodeAt(1))+c(t.charCodeAt(2)),i=16*c(t.charCodeAt(3))+c(t.charCodeAt(4)),r=16*c(t.charCodeAt(5))+c(t.charCodeAt(6)),s=16*c(t.charCodeAt(7))+c(t.charCodeAt(8));return new e(new cs(n,i,r,s/255))}if(4===n){const n=c(t.charCodeAt(1)),i=c(t.charCodeAt(2)),r=c(t.charCodeAt(3));return new e(new cs(16*n+n,16*i+i,16*r+r))}if(5===n){const n=c(t.charCodeAt(1)),i=c(t.charCodeAt(2)),r=c(t.charCodeAt(3)),s=c(t.charCodeAt(4));return new e(new cs(16*n+n,16*i+i,16*r+r,(16*s+s)/255))}return null}function c(e){switch(e){case 48:return 0;case 49:return 1;case 50:return 2;case 51:return 3;case 52:return 4;case 53:return 5;case 54:return 6;case 55:return 7;case 56:return 8;case 57:return 9;case 97:return 10;case 65:return 10;case 98:return 11;case 66:return 11;case 99:return 12;case 67:return 12;case 100:return 13;case 68:return 13;case 101:return 14;case 69:return 14;case 102:return 15;case 70:return 15}return 0}t.formatRGB=n,t.formatRGBA=i,t.formatHSL=r,t.formatHSLA=s,t.formatHex=a,t.formatHexA=l,t.format=u,t.parseHex=h})(n=t.CSS||(t.CSS={}))})(t=e.Format||(e.Format={}))}(ms||(ms={}));var Ns=function(e,t,n,i){function r(e){return e instanceof n?e:new n((function(t){t(e)}))}return new(n||(n=Promise))((function(n,s){function o(e){try{l(i.next(e))}catch(xs){s(xs)}}function a(e){try{l(i["throw"](e))}catch(xs){s(xs)}}function l(e){e.done?n(e.value):r(e.value).then(o,a)}l((i=i.apply(e,t||[])).next())}))};class Ss extends un{get uri(){return this._uri}get eol(){return this._eol}getValue(){return this.getText()}findMatches(e){const t=[];for(let n=0;nthis._lines.length)t=this._lines.length,n=this._lines[t-1].length+1,i=!0;else{const e=this._lines[t-1].length+1;n<1?(n=1,i=!0):n>e&&(n=e,i=!0)}return i?{lineNumber:t,column:n}:e}}class Es{constructor(e,t){this._host=e,this._models=Object.create(null),this._foreignModuleFactory=t,this._foreignModule=null}dispose(){this._models=Object.create(null)}_getModel(e){return this._models[e]}_getModels(){const e=[];return Object.keys(this._models).forEach((t=>e.push(this._models[t]))),e}acceptNewModel(e){this._models[e.url]=new Ss(Wt.parse(e.url),e.lines,e.EOL,e.versionId)}acceptModelChanged(e,t){if(!this._models[e])return;const n=this._models[e];n.onEvents(t)}acceptRemovedModel(e){this._models[e]&&delete this._models[e]}computeUnicodeHighlights(e,t,n){return Ns(this,void 0,void 0,(function*(){const i=this._getModel(e);return i?ar.computeUnicodeHighlights(i,t,n):{ranges:[],hasMore:!1,ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0}}))}computeDiff(e,t,n,i){return Ns(this,void 0,void 0,(function*(){const r=this._getModel(e),s=this._getModel(t);return r&&s?Es.computeDiff(r,s,n,i):null}))}static computeDiff(e,t,n,i){const r="advanced"===i?us.getAdvanced():us.getLegacy(),s=e.getLinesContent(),o=t.getLinesContent(),a=r.computeDiff(s,o,n),l=!(a.changes.length>0)&&this._modelsAreIdentical(e,t);function u(e){return e.map((e=>{var t;return[e.originalRange.startLineNumber,e.originalRange.endLineNumberExclusive,e.modifiedRange.startLineNumber,e.modifiedRange.endLineNumberExclusive,null===(t=e.innerChanges)||void 0===t?void 0:t.map((e=>[e.originalRange.startLineNumber,e.originalRange.startColumn,e.originalRange.endLineNumber,e.originalRange.endColumn,e.modifiedRange.startLineNumber,e.modifiedRange.startColumn,e.modifiedRange.endLineNumber,e.modifiedRange.endColumn]))]}))}return{identical:l,quitEarly:a.hitTimeout,changes:u(a.changes),moves:a.moves.map((e=>[e.lineRangeMapping.original.startLineNumber,e.lineRangeMapping.original.endLineNumberExclusive,e.lineRangeMapping.modified.startLineNumber,e.lineRangeMapping.modified.endLineNumberExclusive,u(e.changes)]))}}static _modelsAreIdentical(e,t){const n=e.getLineCount(),i=t.getLineCount();if(n!==i)return!1;for(let r=1;r<=n;r++){const n=e.getLineContent(r),i=t.getLineContent(r);if(n!==i)return!1}return!0}computeMoreMinimalEdits(e,t,n){return Ns(this,void 0,void 0,(function*(){const i=this._getModel(e);if(!i)return t;const r=[];let s;t=t.slice(0).sort(((e,t)=>{if(e.range&&t.range)return tn.compareRangesUsingStarts(e.range,t.range);const n=e.range?0:1,i=t.range?0:1;return n-i}));for(let{range:e,text:o,eol:a}of t){if("number"===typeof a&&(s=a),tn.isEmpty(e)&&!o)continue;const t=i.getValueInRange(e);if(o=o.replace(/\r\n|\n|\r/g,i.eol),t===o)continue;if(Math.max(o.length,t.length)>Es._diffLimit){r.push({range:e,text:o});continue}const l=st(t,o,n),u=i.offsetAt(tn.lift(e).getStartPosition());for(const e of l){const t=i.positionAt(u+e.originalStart),n=i.positionAt(u+e.originalStart+e.originalLength),s={text:o.substr(e.modifiedStart,e.modifiedLength),range:{startLineNumber:t.lineNumber,startColumn:t.column,endLineNumber:n.lineNumber,endColumn:n.column}};i.getValueInRange(s.range)!==s.text&&r.push(s)}}return"number"===typeof s&&r.push({eol:s,text:"",range:{startLineNumber:0,startColumn:0,endLineNumber:0,endColumn:0}}),r}))}computeLinks(e){return Ns(this,void 0,void 0,(function*(){const t=this._getModel(e);return t?Sn(t):null}))}computeDefaultDocumentColors(e){return Ns(this,void 0,void 0,(function*(){const t=this._getModel(e);return t?Ls(t):null}))}textualSuggest(e,t,n,i){return Ns(this,void 0,void 0,(function*(){const r=new R,s=new RegExp(n,i),o=new Set;e:for(const n of e){const e=this._getModel(n);if(e)for(const n of e.words(s))if(n!==t&&isNaN(Number(n))&&(o.add(n),o.size>Es._suggestionsLimit))break e}return{words:Array.from(o),duration:r.elapsed()}}))}computeWordRanges(e,t,n,i){return Ns(this,void 0,void 0,(function*(){const r=this._getModel(e);if(!r)return Object.create(null);const s=new RegExp(n,i),o=Object.create(null);for(let e=t.startLineNumber;ethis._host.fhr(e,t),r=U(n,i),s={host:r,getMirrorModels:()=>this._getModels()};return this._foreignModuleFactory?(this._foreignModule=this._foreignModuleFactory(s,t),Promise.resolve(B(this._foreignModule))):Promise.reject(new Error("Unexpected usage"))}fmr(e,t){if(!this._foreignModule||"function"!==typeof this._foreignModule[e])return Promise.reject(new Error("Missing requestHandler or method: "+e));try{return Promise.resolve(this._foreignModule[e].apply(this._foreignModule,t))}catch(xs){return Promise.reject(xs)}}}Es._diffLimit=1e5,Es._suggestionsLimit=1e4,"function"===typeof importScripts&&(globalThis.monaco=ji());let Rs=!1;function As(e){if(Rs)return;Rs=!0;const t=new Qe((e=>{globalThis.postMessage(e)}),(t=>new Es(t,e)));globalThis.onmessage=e=>{t.onmessage(e.data)}}globalThis.onmessage=e=>{Rs||As(null)}})(); \ No newline at end of file diff --git a/dist/favicon.ico b/dist/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ae7bbdb712f8ce9fe49761b68ef3a2d4c51606f9 GIT binary patch literal 64483 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 literal 0 HcmV?d00001 diff --git a/dist/fonts/KFOkCnqEu92Fr1MmgVxIIzQ.68bb21d0.woff b/dist/fonts/KFOkCnqEu92Fr1MmgVxIIzQ.68bb21d0.woff new file mode 100644 index 0000000000000000000000000000000000000000..a815cf86dfffe53d84f9522397adcd6c3eec46ee GIT binary patch literal 20436 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 literal 0 HcmV?d00001 diff --git a/dist/fonts/KFOlCnqEu92Fr1MmSU5fBBc-.c2f7ab22.woff b/dist/fonts/KFOlCnqEu92Fr1MmSU5fBBc-.c2f7ab22.woff new file mode 100644 index 0000000000000000000000000000000000000000..36979aeeff6ae17c15e6b0e81080d75fc46dff27 GIT binary patch literal 20416 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 KnEC@AHdoOjhohqa literal 0 HcmV?d00001 diff --git a/dist/fonts/KFOlCnqEu92Fr1MmWUlfBBc-.77ecb942.woff b/dist/fonts/KFOlCnqEu92Fr1MmWUlfBBc-.77ecb942.woff new file mode 100644 index 0000000000000000000000000000000000000000..db0012d1bfa39c7f7da77edffde9ea359e3abfb1 GIT binary patch literal 20408 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 FQOM0DF!%rf literal 0 HcmV?d00001 diff --git a/dist/fonts/KFOlCnqEu92Fr1MmYUtfBBc-.f5677eb2.woff b/dist/fonts/KFOlCnqEu92Fr1MmYUtfBBc-.f5677eb2.woff new file mode 100644 index 0000000000000000000000000000000000000000..04cbe949a4f1357f2aae25a16aa185f9592fd736 GIT binary patch literal 20424 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]r2)AW*N(^RhnRQBqFmpd7;dMC^Wa^$8c}%U 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 literal 0 HcmV?d00001 diff --git a/dist/fonts/codicon.4a477f66.ttf b/dist/fonts/codicon.4a477f66.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c4a33a4d5669d1c4f6ac274fae5792096bdb082b GIT binary patch literal 73464 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

Qk$}yZX}A^V81s#cQV5+`Q((p3u{-by?gDm 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 literal 0 HcmV?d00001 diff --git a/dist/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.4d73cb90.woff b/dist/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.4d73cb90.woff new file mode 100644 index 0000000000000000000000000000000000000000..88fdf4d026a999aa0e5bd310635f5c5a43e716a1 GIT binary patch literal 164912 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 z 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 literal 0 HcmV?d00001 diff --git a/dist/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.c5371cfb.woff2 b/dist/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.c5371cfb.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f1fd22ff1c117e187f088de6746eb1f82187a992 GIT binary patch literal 128616 zcmV(~K+nH-Pew8T0RR910rqGB4gdfE1%9jm0rn060RR9100000000000000000000 z0000Q92*QAgWp63U;yh55eN#9!hDRzMhnGQ00A}vBm<&w1Rw>1dIum|t6Y=_)O~W6&BR$wt zF+#5p@!_<-$IZs@OSo@D(V0n9AEE!+n-%`)zbzh_AdxLk3g$LjAt_ns4oNca_Jin)e27moZPAoh%uqFWJ`N6gSku|$tOJU-)Vm?XX?x*#k%q; zEAc`8gYZQtrQ-U2xUb60kN-fZ3Za7y1xeGpCnCD%&qVjk_f+hE_xu0MdMB_k$xhDY zL1IOOia-H?nl+P&Nx%O<03nzr>5fk>LU8BbGG!~jydyp zkRTz5NDvVbkr1qihz-Fve*RdU>u_4@aw)yud+e>_G@9?bY;NQG^?q_84IzXOf|Za4 z5wT)}ND#TN_f`MN$;ruKb~g3D>vLcBoAw*lwkVqnHfZ$qz#zCs1Vg|Md!}Pb z+q2_Y+TK}SpJ*b6MLU){_u(T1OB<|jNP#G;X-cYo){=^t5Lx*qlIFi|68vIH-Q%e? z`@(o|$kD@e1H&=RDf8Zd2MiiOrh$=T1_iZWb9jIv=yZFK$l;mpO^kxMOm>D9JkYGk z?(`%vn`kyGCPU&TyDDz7S!S}yw>7!H_#O91)*pA*KDDXiu%FJCGXw~RX{@@=RkZ`L z<>A}b|HBrxoP&=4xA7uk`zt1X#%2p!-5%r+!UR!@2`a|)b)t#E{e*s>P5qJre4$BreFnObWIO{- z7{*K+h7H4|bQLyqd1=)&fi6`Ug4)p>-1bkR7`*61hjR%UE zWE>?Oswl8(EkD>avuCV{kidKuGp0+M@ox<5^9bV+#&s?g1-FIT?*buJ7$#8aR)Yox zj&k3v*>DP>P!?-YlE8=fTDI?7`Q~uBe9~l#kW|g?5QDLO7QN>{hFBhn@G1QO+hA*5 ztkfuKr{8#>0Vj%kTEn)Txz+KAD5FQWl~D1EVU`)5pk(s_K|6o==LRKAiU?B|Kd ze3=Pk{zQVnPb3H=2nqy52}~|VCP*1bk`f7!ED%}k=D zK0+8Flp=D3y~lrhzQo(c?dOi0b7rRcqAIGQA|fK{-tY77eCbJc+4r;ky1RR-Dn>+A zRYgTbj2L5#5%J8%us*0#XX+ox3IQ=HRa=AoH2MW8n#2Sh2qF-vdi|BJ-mjSR`O%c> zYs8$!5JWgiQ>3(Odj*nTh?+_=+M>L|g&x9Tj0nPnuTpA=Z8<=ncZoHOLaMHkgT;O5 zw0|TJJLM{u;Dlfs(`_&a)K=P7W_Bg`f1Aw2H3?9H>HV-&2AQ+oUajZt*RyB^7dTdn zi+<@2lNk_f=e9817g;J$$Za$aP?NThZ%`4PUOoSAVkd z%eKa5VJ)NjqwMXOFOy?^hoRW&?=0_E=|{Zn7@kYm1qQwPNy5RwfT3Wwf?q>m`$&$z zWdJ=FhlHpUlF_>F6^2WJCaGozuk8!Q68RnChd@J$=Od0QUUTp~;06=?d9x zn!MjV5S+Gx|_&wE&4|7{@^>sym75QeQx`(G18EGv@HL1qRxg zkAZVhvb1!b00sXRrvOgfU>T8kW+ggjk)4X&8nIdONb2+Q*j)@W$knM8_TA6`GXEa% z6if(C!e^Gsa?1G3DD7cR0|RAvR3AJIBxd^^y39ue+4LiRT<{UgSary6e$2Ue1lqD7 z+*r&X5p$)~SfOMa^HA?cE=chBy_jDDhqD~`ifjTBSHq)_lo>SIpDsk?_A4YqJ+k5TdeF^Hdud;)J`jg z)#h3@dRvC8oT^U(sdLiZn+q&@01HHm|I?@PqRMUL^N@c=xDi-vL3|Z>qZ?TtBn@RM zs3?J;J?Bb|YYXhA#vg^yed|@Vz)qEHvj{ynAc_awe7=Yov8*|4<;@<70A-#02djrt zZLB~D58}G}Dy5s`44ez2C1eOlnvQQSfb)YK3f^2~wR1E4zOy`2atXcq$}+WV)q+g; zmT~J4UkyzznLJx13FivJ+-t?~pL>Go5ju^Wg;Jy(+w1QQ&e1l#e~0EU5R_+q`w%h5 zZt1!glt)H(RsN4&P9!o23L7#cF4n4t@{=%QE<9#o9 zxIF=I1jI<+4)oY`g3sqpTlm-wD>S9TWU)gz0BWnBS?UtFewqbfaTo=fXp{I5Cg+e{ zQjoB6G@2XRelRqx<5&0_fmY`N)1AX*qPYJw1mi$q@~jc z@k;55ZAb0EuDPI+0QYxX(jeThqU#J`!zpgoC(7c|jRTd{q|1@`s#_zHMz5tV%9+6v zlwM^Yu*-SG1Mp&LYh2X0mIm>FWb|$hWf*R%qOvYhH%URpcGTyQYXcrkU8fG2;~hP= zDC=`&5kq}qG^Uc%;_40H5V1WQGO#}`xOx{sGK{sKZ;(D+v0@rr*EiGz+cW5U$Lm755Lh^6;hxuaNLPzwH7stI>$k_dSv!6A`(I)7k>xKkK6!x;g`ToS82Se zfzm!n#)$nTmP(NJ_wcjRYt@dooW@qr{8J^+tI#0kT_s}|I*_dNuM5Bj$%G8+7Z;>_ zDpd$sDBrO?mm-1)w>9i4qilKMwol!Sv_0SlaH`nG#0f{ZZwT2Jt}PLwuGuvtEtF0< z5kFD^@yn9R4#Mc9(VS4w|If?~bDgYAyt8#ir{XFS8f3+Uv`|Buj>mLl%)&mUNC-VUMM^ zb2bEUmqVSQM0S?Wg4rokt!$nqI)w5hCMWU)skL)+%`7_Ksk$M#L_~Pdc$61ILTYY@ zqO^BZD;@~#-%+geS`6Tec2xrP(_7r973hrnNIMMM7?_^#2;sXBn(UKt)%)C_V6Pbk zE?QBFM!B5?6&dKWV$Ld~aS#Q($+sY70=OnD_yeC~=>&ATgT-ODqhm%$``g51hVxpX zTvYIsb%ZuVb(R zIV~Pd=t6COl-H)nNBDFgdKM*AI$5gJ9OKNKa|vlC)rwbIJJzJbFI~YKw8&E ziCD0d9fy>B0uE_0E*=7*o%aSo_ibJ~-&k#kUmLgujtiUFjnMv~cFapa^+ZDrJ!M+} zYD%u$&g{+jo^C>W&`(Jq5zo1`PHyj`m7=_eix@;Z=2&x251jnL>)cCew6e0aK+bas z75Ia;1lM(+%2uDee6ELe!;NXrI$m;hZJ}c>;8J}(I7m6wQVFEgW2D)Yq2`079WC|i z@-ra-in9q{`gwyc8wfO#mdI_F*Py4e+bzV71eKp{>v zkT;Q4NEV{d{HOU=b5nCnvrDr~)2PYNglP=wm+IT(oculcoAOS1i9AtmkV|AQWYe;9vVF1*vN~CgOedqvY|ZVf2k#z!`_P2? z@%*V{H{EdRR*&Dj7HZzGc+;|-ZntuwB2}QdxuLATn#+5yp}Zwo5~at9BZtlA*ddcf zPF@0hFxXlclgD(R9fQ8-gsVu2)j4>sn;d+N%H)7ESUlJ2+7pq>Dz?p!Jz0I0Zt2$aIg9;j82`t_spm03JbbOyYKseTl@~9lj zXkWz^l)y`I6ZD1lJ^CiT2!_7|X28=slDu7V9{KbE&Npa%6q9kuehL)iGsyDZ7YxjH zpbK$c#9Lf;cjG03G%#&b;dJWpk#A`MgQJGG47ducxDrDEE zs12LrO^9bM-325MXy*FgCJ2gq9^#X6%2RN5b(|!UAj*tnOC&TpW9Y~Hv~;vM#ojCE zH^dExB9wNS#~Vo8bLaC|C<2*Tobik_fGGx%fpqcKW8RVKlj7OSIq@4h*czZE2_QNz zKpW^45wo&nL#-6mtG1|~A=BY`%X zMHM#QzT?lD=297Ka^hPM`gCLio%E}Kny|CYBU&qON!r3cU-|9%J6nJ=)ih4k38!Qw zdJvQ)+D37QcJ|crn2u5IPHhTu7c+n(l@kJ3ZZSMh4GJAZQY=rz&*)bg%5D7N^nf(* z1sXj2HOO>D_=x%BG=pNIA2+_hC5;7xNHYqf1e?Pd`JViKu5>y#H|<}$ievpDcc;@&|tF`hmx zO^YSU*Fu3`KPAkUp+^Ao1+d&ORRm*9Lp+L#%TQq?oXMi<%Va^Y;5JczyUR+NQiLfJ zUHou9-4&Zu@eHeU3&7Ca?ut+2t?Wnh zi4_;VoR5rJ2(O%+VFnwF&N{xT8g_>OE?it?_|TI_N$s^wjxe+NwbvqUrlEyVu0?3x zO!Fm+#48Z@wBhQN@We&8+r_y~_AB);Sh=x{N#-Vbu446)43RHbc=15*Ew4-g8S!cvk>r~RY;ly87E%=L=I?0t4~!`8h0V<~ znz(|T`AJyB=<=yw7|Hk-R6m|}*;a}tUa(T8I+QCXxmYaqbo~7x-t&dcO_NaA?$Sg2 zpxYhEcwVmTC^!P*(h2&k9H>5-I6c$zICJ}Lzvca&Lua?|SnjLe_1Ekb*tIx{gwWAwS87@o zF1vxL>Q@#3nFtQF{R260P78RogNDfOlk}kw+f|O;x(Z~8V1#QOwy#QkNZhPdh)R+n z(lR!@`HGl5EuZC5yLNYWE(j^mVy3Xe+hmwvioP1lZT+CvAqtwX*YSSakfUaDy5FIr zUA`r=5&?5GeFZQz4#8RCYx*)z9jzFCA6P}qJ2q4juFf4$?PoznEh9RMhtZAo@kx7H>@XmLT|{WQN?`!BQ;IG>MJfDSawd@@<-E{Cb#x zV>$;x%SjDQ9C?`>!O^T8_$qzX(fmf+J+uScCvD2`9%i%f!#S`m6=4s&{ zUL+8$nKpgZ-lPUdxjUH>*DH#A10AJuCk%uAERM09DCRReW&%-KYDg^gc;A*CJ5{8M zlXC+0r(rVqy6Bs**l~0jVV`enzBU51`Q=K%Eu$^JGvbA&gfD51RSpd%1X zT_&Z57>=rh^&Tq5xbQ>tb?qeI7g~ZiA4Ng*yxJf8?3f4EUI|K|F)VtI&Nbx-Q7{@P zJuIj%$f!bN<)u`yRCDE6l$hI;xnuCq!XVaDxOvr4ml?Hgz5qxGs{PyLyxQ&58et`X}+Aw&n11*iKEZH5`*OK#}Uo!D4U`$sB#wQeM+ zwrVqW7D|+cuAa)GHj>6pJ5|rfD9DzS>M8?6&Q)EF7U?@tsuF6N?U*Ggg7dwUWx95x z-xT-7Lx}<=T&k`q!Gku3E`fy*ueIg9x+$is1w=iv(=x;GsF$6)w8?a-s18O#>Q%dX zqi@(yr!RT5lzH!~jub4li=#E~ zG@UdheUDB|-qFlfT)X{R50ohj{r2SN7Mv~H;?ZY(Ng@roci<2BgN z1ed3wA@L{v!(aKphob{E(Nu)1_q7M8BGue1Fm#Z^Mk}N; z0Gcg^i0f}{(*i+F{9hZr@GUJ`ZS0Ba6ufq2vc(CMc;YZ#%&RScRkRcsS@W}{dgfk! z12lG`I619L%RVQ9@{=lDau>|E>99jq4NI^eTXIo498ADp&k!=0jk$`a;@f5}$z%X=$x!j-Qm-X`=q(N~$k#wMX` zUmT}^EgZQUgBY7Cqh)gOpR)bbFwG4p{dW4xqQ`?Opr5Zmw)-=h&a67fE* zTTC08rq+vho^O7E4BacdnA|uQ?GIOW_EzJH$iD|Vfd25Wy3&4@Ud*@!RxA(hcT3-@ zZ@d+_(CSN#AN{6u#czVI5u)}oz78%hfjIFEVk1A*D&wjK=IF3eI&Hp-6Tg6>P_kCy z41l>Rx`>aF^FUF^X0c@JTLWnk&DVy5006s+-L=&?M%)+b_bI7JH!?#}3J`!j>oOfYJsFg&Yy&zQ*%$PUcpnS?}Sg>6^Xy@Ua!z zW-jbg&z&}0CJpa+4p4HQ2p#Fr%K zQENhQSqx?+M>Mb#d%1EmPWYJ@*cM@oyReDT{)2Y%1d{>M<-IY1v4v55(Zs!{5E3E% z8(+$k{ibLuP&M#!iRbSGWSL0d)Ln^9V1hRTG~JlU(oSo6=|kvkCW(G9rjw*iR+pF! zB!4H}=oESxsP%&Yr=F)I?Yi;8TavCIYfGk_EatCb6gNf%M&y!z@Hc+tYcIIhg$}b5 zD2)=YCA4xQSh{sxF00J5ieDgkW%Hu23WP&yRJ__GSNx7)uwIXWE*d35)9W;dN2uI0 z4RLe6x8O2D6-sbfyf}JLN!fYwt_p?9T_6g0fUPEfo*u`AwU=fT z(%QFza%1VDur&Ugj%`Bz^ET332jIVNb3qcFPZ5H8A$0#i1u!7JEx_+L+{KG%>JK^LkTX5Uy_D(L`%}Smu=67Pd>F+f9@TmN7XLDzv#n=K~gC+I9x7@o$M_i_&fsU$b44yxYVU z4fISa9+tsF-BMrT?EC#>47i*G-dxq!2{RI^^Os5RXE`!cHt}-iWLd@-6iL-~F>a9l zhpr}R5jEi{yZW<_GHIUrlPADTXq+k8=3�{V5Ux10YTPcjn|+#u(mL`-~}?0-nmK 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�TBx-D<>G7m^i?qG-6W%>!-QfH!oA6h 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 Nw1oHH?|-Rs0009$rq=)f literal 0 HcmV?d00001 diff --git a/dist/fonts/roboto-mono-cyrillic-ext-400-normal.13c026e0.woff2 b/dist/fonts/roboto-mono-cyrillic-ext-400-normal.13c026e0.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..184deab2f25467d66eb73bcbd5cb1c8eaf1dd257 GIT binary patch literal 13016 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 aUQ7!bf?&^nA7lXl0`Pw>wTs`4V=Vx+$|e>7 literal 0 HcmV?d00001 diff --git a/dist/fonts/roboto-mono-cyrillic-ext-400-normal.9a2551a4.woff b/dist/fonts/roboto-mono-cyrillic-ext-400-normal.9a2551a4.woff new file mode 100644 index 0000000000000000000000000000000000000000..5004ebfab37a004798803e957efde314f2bc7b98 GIT binary patch literal 16876 zcmYhi18^qK+lCt_8*gmewrwXH+sPZ-wr$&QY;J7Z+}KX`?C<}bQ+2xPuAb+rd%AnN zr)#EW>Ty?;kN^P%`B#K5K@k3{ZLt2u|0DlJ|NkPXsxATo0?PD{ar~!bgdhk-RYsP7 z%<^BX@K1(baVt@(YQk#&So^=2|DU8z9i|ve07ee~*y}$*{*$qxyHuEkk@G(W{?7se z^ZyFj!q(ILANv>c{PP)6hzjPMS(+J{{%Z>PpXY!5g0klzTK zfQ!dJ_HQhp(*Lx;fzJA2Yj5(;C(!&~{GR}@>VyCzkAM9NMf^Jt@1KZ3p+R}&Fb=l#Dc`rpCdzyDPp8zzQE+>=~^fvJIkt{BzK;NZo4A?Cef2_wHj zpmN}qKn_R)y88NfgTZCNs+lAgcB|px@ucN8VBupPzOb>eG;1_DK~h0FK;UoS4F78n zVKfjjKnV+~|KnRkOpLTyvw)<(m>s8L|2zPdnTig!y7Q$N(qgkNrl{>qDf3>5k>^b? z_!e}52~zQY<3Sj2DoO*zg1+5#_u8R0fy123d2VhwiEGs3Ot|9aEG6H>-&{e!`|!P` zY-ECbP??g_GF>qW)UslszdumQiE47B*B5hK64QAk&otFwaW@Vci~QumD?jwvidj`g zX_+VZlGb411;nbA8NgEimHq4fPMHVguz@^^|E7hWo5(lH3*`IhE{!VQi3Ol0jcL z4I_=D^u0p4J7`J&!xBy%2L1fKWadKRt`4v3G|zjc zV{(A22M^Ja@&zJ%l={>mfh~jzEor1g#b>`$RqmExBoqHf?=#EB*w$};$2w>LUzA>Q zS7tERWbZ3DbNB~OIij{QIeB*y%7kq(;1WGDq!>u$9U25%DpCl498Jx-G-2RGHEB>t zq!XQyOz*5yJE?tvsafk+m@tb83$8IaD0jh9y{wm3Yg=FIYdc)iRfVG3%tJ47%S^7^ z;%)c`*tx;*sB0cO^v89*X6SCM^US^I!Wd{&y^QYAv0|Rar=g=tc<&*hqmB5~yXsw0 zYL+~TT2)`^hsNZA$b>>;9wy>jiRYD$IpP5(ZxXj( zoe4dMcO6-L>WVFG`gAL(#|yMMAefKs#{m9{*0_(#R}a!7b|n&_SB^L*kN+4F!nJaLP}CT{#L zJ5vKK!OgPeGK^JoR67hV-IjBkpW9}mARu)#+Rq`u!C2wx6M9wc-59^Mt# z+yZ#{Fk$vL^w!zjuM6)<+7Q6CUUz_)#A_jJaW1pWaFzHM$Z;@S`?z6k~y-epG@n zW_T5(lqW!C^|Tb@7NQd@G2&vjFIL|-jF#KwY%9MVB`xnu=_1Y%k(9`o%3pa6=Vbe@ z@UCg6U&Oic$%h>0`w7zRPrA&9lPOKrYqn?9OHoTb@LEohiv@&Bn6gO61fP zh|nOMPr0t1Emc8vu@_>-0Q@a0*yO(}NTLRGqO>Ys2K-o z^Aa9%Tkc->_aQ%uN_QtD+z_S(QR=J4v*?$q>a?=y(&U|aeyL!vnkU!$m)8QUMa=;} zC|`OuTnub3yxS(bZX(207g^*yAC@{TAKftGvO(e`3KBC9PaXa}1bvM}#K*>t(URh1 zK{N9$)@s9NBvwPN^LBgJuV8N-?9@pdeN1PPW93zOad2kf*%&#p0Ue9z%w4{Lwl=#l za*BL=J!RRPX4BR5(>?gp^t+q;x(`mOs+iw)Ykzbx>1+%v%JETg#t1ih`7TXM2~`W}hYDP|fqfA}{@&ev_(I}1v@u)s0Fs)}4d zmF2dBYTFdL3O5uY5g-s^qEjjs3T>?{D_E#RY4weMavWLA_#yeOX(&`KxpD{#0TS4l zuavud>ylsj($_n|d40e8+$XG`yeQ+YC~34{vp^7h^C0|?{61k0S$99o0q zFo??GkkjRAmXbr0Eof2Hj(=5DYtxmDMKgPjt1wC?vt__*W2CIL9^p+~9(#*(l+svL zU$2g{lXtT`8l*3BZ(LlkPS%k8tSu;m)ZyUD$ty2KvHETL7*&$g8R{MmCcI&-w{v+j z9#UeQzTv5!#;v8HUH2;r+{;FUBKep@%NV6{sbWl61(Y3ug}AUDVv7MTOskE~GCRiUK~^0CVs&=3Q|et+)u`kNe*LTqy9Em) zA{!&|G#N%Ej5a`2tWAaHsk%N@2h!MzqEv)*E?qATX>v#HcoJ8mA-<3$ojyNRs&5(i^Y$xx>=S%w$L= z%grgD<+mwIstiRmcG3fNR2j9kz!Zcj*>{lOpfC7IHOhM`a2upj2%TYT2b&H+dP7y%QTmLQo3I8|c!y+KB1>+W(g#TsOqAvQBL>;W3!I(9{Yc9>%?qEr9IG<|@>N}S~lEt^q`k7qucuwf@pPhlr zEzvs3A^P>C%!k9POLxR~80$b(lYlMbdcQq!)g0QGKm-i#6)|yjo&3&UOb8`Zq zy~ySrm4@90jkG0JizHjg_I zfygFI3Lh$`0n?n4CDCE+k^oEnM)y|Jg;_d6ucAsfo(Zq3xaG{&7LJX&#qnw?0R7WT z-=+#qi>eroRFw8ko~FoRFWtFRX*>dhpuTE0bM_JfqDAt^wa|B+4W2^!rd3Z}zTJ`~ zf_5s4SGrlggEz7xRQ*?wv&j%A%J?5oICZ4^JBYFH?uM5n z6)s4S{&KWtKNz9@8UL5`sa?N^uTdLC4gtsKUsJpOPq`b(YcpFg&w^{~TRfMopYo@8 zZ;iRO`K*1f{J^Y__flOtD%?)PO-voK~Uo$5V>>c}A$=Yy3(B7ke(exbQ*mQ!$Hd>FV5~laawMiOAOOA~5{D zhd0FF-bI6+eq&%)%?hM?z|EJCDCHdTBNiBJlql2a@N3qVy)s8MwQ`#G!RJTFUtOf1 zTz~m1py++(1|j32Jc#dpq)^M~7pUz=Nf`;C)&X}>xn|TO&=CZ@E3E6LbJO6+b>WBR zMCTsX{J~hSu2$O*)ISisCadDs;y4=TgK7m{aNY1Q9S*dxpy|S~8ulk+!iTd;5mf7- zHiaXpXIb)F*jRV{2*0Ms+br4S^}U2hE0nnD(*~ICoEY97vFW_Om#sS6MG8}I4P#6K z;1EoX*c}GC=`l>)l!St3TDQ1Mt!XZEnt%?k{d0TtPawW^%B8ESC+v%Jn{qyfZAJ3| z8mZn9;GH)LXD#?%=#HkSozZkjBvJH2!z7~073|SR!CgUtM7mv2!0@Jyr|0K z71v?&LssCoGk>Mn^8UcU#{n=4Xn)cMtRI~5=fW@$+w={X)}9km6?z!ew2gABO1~_L zqDRzJ9XI|VUPo6|U(FA6Ix2mCUs-v7PnXchtEjD()Pm6X9d&XouTY*nUufWwGb67z zOb|_H3UM~K$=~q0u&OF$_X@|1 z+dC+ZSRK_ zm47%tms=!jJyIY37Qu>_E=*tNec9b|Ut@Wsc7f=M5kvuqo&K7>ls?%)x8Qg(WBn+5 zHeG}pf+LVE)uvWiy(UG4?c!C{`??JpFsXE*oOr){OcL`7%q(HEj#R9V$^L%-Wg=4R zCQHW=zU-z>)3dRETcmbV!N2FqgTLw$TArvK9-t^Qt@@=$S`fI6c)EPG(ivo2$B|vE z(pwWU*^|EK1bKYlyqcv_*(_08mS}$G8<7eiQO;O5b~A5MNKEYz%;yP>Y$~u39E}xn z7+RYxKw0ufKEDZ-WGaWl5CF?+`h8OT;Ww*R^de}Xfj4eG@1B8-(La$v<@NHJea1V- z0!0s)Q{mMjz4a*EBXc#x{Qv`ZC8|6QJrryTOexkyFS-7c)`hx;FM;h8IR$cw9 zka{~1fWI@$jE0XJ@@*gZjSo3i!v%-pfx4GGX#V$LcAe1ngX`nM{~-2s_jlfmtMSVb z21+E!CF2vv{Q8!GP*bF#5av4s@+$+XDbN7yNwUxnsA&55NjP6zeh2+>g_|8K$hALY z?7fWc1<6-m!)k~n8avNDl&x>LfYaC#S@nS_x4A4t=G1qrjzUgu9_{ExFT-L_Cx8VH zNp5UzDq_F%GxG1Rp2BR$;?=_k&u-2qldh(Y)sqhvr%W}PWDB1MAnDolgS|xe&h+$j zHs7_O9YG?9OloG!hF6kIHM>N=HSbxh*v`wKFyuZISc*?1KTf1>@2Amn&jobWTGA1v~RKtL>pa(OYYWlQqqY3?!MNbrPl8 zq(5nSMb|L7kL=Y4X5{Lu?|}dM=|4*zFZn5RgK5KVmyT*UtSL=VC98&q9?oECA_Grj z*SM8v?7^7CgTg!6o#Oju_IOq3yN`S}cH2vQ5-*i?wrIVycYZ0$z?GjRvG8ut~kZbmSNgUJg#zGx{(e(8^5cO4u;Nt%qxtr5>_7#DD2ar$%e23zOU zfhVqzyFs}J_eF8jf}aQ)%~@Q5Hdt3(Q?f+|O)sZDZu-8ULa@NpcW^f$PouRaCSFS7 zid_%?mx6K61#n)gb^gd9OZ(;lOP5S=Iq!X5|3e)~hg7at^|Y(%}y4*OYc5U$i^}Vn*9-1!28F0hU9wQijX2Bh@48CbvLC?PMJrcB+u^Q`~YSKC1T%S zVUCZnv1nPG7rwTd6wVL<^DV>b-atxFF%O0<$$1M5IFq2>U!uE=D3O14c1O#4#`yeR zlW$C$K2H0%%0GH9ixw8R$0k0JF+z2KPatf3nAgQrwaY9P1vgf6F9;x<(~izug$W*8 ztiRm|a*jevsKtsLb7LF`Vijixm+D^>#@)Ow&|$?_Zl1Qe@CSlqiu8Tn<@F6fKAyU; zp0Rl}7Rxngopc&5(5zhz5Grm>hIVh;@nJU8yC(LZFY!ixF(KkfT7c%2g3QYGFAv-S zZ{<9y)~@tz@kq#1^g}94!APP;(#;3f)edX+^B54gZT7Iua@{^Q%<=w=cqL%i_uxF2 zuBj>_>mIx!U07JROt6&wT^kdf=+<64E($T zZMOsC@#JdANIrClLZ6rB*{?0_$CtubQ*}zzwj3RZf?dN8MdEQq3{(n0Ofuh0fc_FF z|Kx9aS_68w^EK!)U2DK^Mtuv1_P2yNZ8iXW3aRX%H_r%jX{R_?-H6&Cz)vAt7Zd=97ae(IZ=KT=wMN~8@UA7upm$h%f^dNni*a4yD=(9{p8}&)S`C4wk>sk zc%*0xn3aT{E@_>N_fKKrijM@$Ia&D@SG9`l0e#>NL{hCH7OUW;WuQ+ zeF;}-i$aN`r@jV5AN~D|hd6sgEl|~p3}l_s(hw{E+gH-b(z4aIePYS3sTB?|D{Wq> zi#o@@DyAFw6k@XX&NBof%2>R~H?!BZQmLX++1xKxrAb<_o~G5YRn?ms9g|?lVv<#!)HkhDY93unm$-%I>LMQL0O^C&aB4_fF4Y<4u8m|Mw6(E_EPp-;# z;{G-}hL)9ma|4v>Th^wf!gX|`=o%E@&1527><9@=WbL{5Z*x^Y-4|4;#Oo11%fS1@ zDqXBiri*LLAJ4DW|Fr$`9VQ1ZI}C$fm)`wiuvwo4ts#ATjk~HQD-6FpsN7)?(F6Ban{its}4M6OjHliK@0i4Uv8 zn@HeBKzKyiH4c**&oi60YHGN}MW=uyr> z!OS9cQCBjpn_VP)MQV+|?@)FM8}27*+g}No6-k!qFUNd)9f(IjTyZn?57=Iwd>&&` zD~;X5b#*Ug^KE@G0k@@?CGs-BiL@mB6#7fthElEVjrNpAB?o$dtsc1UxW+xC-NMnq z11;^FPx|=L&s*Ajv|%%KexBNn%X%clhlmwur0RC#-u}Y+M~xzb;@Q<6rF<)^@uj|o zIOaNU0oC0Fm3&VE+-cvX#+_@2F8t>w`iye3+@Wiyb^MDN?hf>yy!_b|ereuAr$b4n zyBW0M73snKAQxDMU!NXR4IloP>|zFiu2aTMfE)n;DWFNy_Oa~GVqM@dl@86G%QLcstjLt50;AjwEuXAR zQVy$3NfJfJ$-_?eb&tva;3@I7A#)Q1joo?gF=GDP$W10dEeYbia{wg zEtR+=C0Y-sR#KOG|KQashbmCBT(tBhik!vnhazdBc4rHhVm^TaDd@DxLON6Pn8t-{Ds;j=VZ zRId5;-Io*gnrs%2>EacKxon-Y~qH5)(iC90m15v;VSQ#0XQ zB+ei1`JC#%Q1PSXtC6|3OH%f?o_w5-Cix-e+S5POnL_AP0t3))OQC{Wd2JIbYJ4gy zifZJP3mgBk&%9W&OMex4wwk*Ebl|r(roMjsp5Sz}>+Gi|dS5kBr!xNLk!#eSNf;}Y zOIA2Yki1AfgGWi6tJB~X6Y>0^kVA2c(jsQ5T44$EeBPo`U+24Yh1h<%r|j5@o!Z1=f zh}GGo9T%^8&!*8v3iJtb1L?0wTqu1RQG_B z#+F1=g75m`W4_GOePFhW94CtrY_m#NUz>Q1rh+atmDVa)c@y2(@7EO6+I~=|BX~T> zUo+H6a20~6gy!ZoZjDQZ4=)1N67ke{B7PnZ*vJ9Lktml?EHEAmWCaH^ute2b=O46h zsMoCa@yd25zi>**s0X?~VkGJMo;QxCOit}zS}Kp`fOB zWEQQ51*CA1FAyMq;Xu>AF5GumR~mPJr|Ywe5$%(Xg~XYr!U~W-l+yeF%O!^Ko2Yh# z4JmRw)piL$6VVS+5SxKH&9&J=ooutyo4K4Sv}{wMl9LeEz`jsR))`I=ktwyk*L47D z(bf2Hi;-zL00Ww>peRruFl8joRXyIT@jEeom~c3R#+8 zRl0OitLixWkUQg#{Fy2t#QnV4GWnxczI(j0)qDR(t;*5zyxHLL^<_lyy^Ic(>5VRr z6+{%J26EOEtM1a71`2$V{#;in8z`eCwg>-RpK!76)XpstW}R8q6h*DJb<( z9{V-jQQkC+Tn8yiWns*bq55_n!|ClJJ-sN&i2_C%f+51raP6_wzW79}matqcpWQd& z058X_080y#;OCPlBa@(=$jJ?ppsmo+X*^$e1=J&o_Fb*~=p5+Dy2&bmi5np<|45Da zAN%7&8A4GV)Y(by^3&CETeNiCW1qOxs1PSm&f?jEM!2P3ZQI)-iD(egmS=)ch4GxM?$IKKk<)fe*P-KkAnVnpikuc{9b__1rY^{*w+@Avvyvff>;+D(XB1|PD)3>!w~{;DOIiM)Pu$k8WB9sm z*5iTWYaYgk^H;B@NcZ*0Rxg@t+vp`$Si}ndqMFCaGdPUXtpS6y*VRt&_Eh=tnB;AB zb>xRYx#BU13CmNsx8HJo8|t_Qc5veYh~1vA(7151b|rl{FInBPNH*Bb*M0MRUS6-z z_~Sz3N_v+ryRl(I(USWJ`{^B)Ir|0uB990<&n3L0T5+18rAVC)mKYvAn3#hL93(#_ zDNQ{g$*OKXV9ucw=d*$zRoGczvtM+#4@0`7X6xtk^<#cuI{!_GFVYHiB3EZ0@g__v z<7@Id{YdaxT*%4dU7a~(3F`#&}Eods(F!E;4iHEm1nGGjR%}>e0%p{2Q~m4{ddaMEy26Nl`V{8Hb(Z8JFBoHhjQyUIQ-LYb@I4L@zWx{pU3tp1F2=q#xK+3dnBwRLF{%Zq@# znpa6?0+XXvW07ai?MaMu$`c3uu;dhj33o2mJJ*IJk?`gZRr^{P?+oy<08sA_w+}$hjO`@9*e!lKY{$jC9n9-aAG#a`93NzTz&5}sDlT#f&^!$MgdYv zXh4P#J7CY)3#&P&^=HJ}I#Y0And;j07VPEh8f}OCS}gR;7t|)g)#2Q?G>IdS->>is zuHwLbieTw|-M>xbVMJt!H_pg*>0@t==pB*wTieo~GiEkFLO<~m!AGdh7NeFo6bB28 z)3^)dBiji#FuOzj@U8g;C6czesBrm&PKKG!c3;dE2WzOkU>WwL{0-=1OY79F9+8WH z8B#6P8-*Xm_Uw7Rq6#y6&`Lr72UAV0V4+baTNs1cXuiW`S}jznLZxyuC~!K~14n0= zVizT?5eJgGCT)v6 zQ)j!q&wMy?V*}m`!{v7pqo2fM0R8f~*3`B8G%B~&uiG~&O6*?DqR_`9-~ABR3Z(+$ zaO6)9=F0RlM|WkMHcbm5kj>7tG*`DS*=l9>b}h|#E&%x(e)5pjVk;)Xs@mS$VU8DAR18Fy|thgB=*)%@Y{6A+^ z_5S9>4<0vpYEHmtB6uFB3LYPMoJte8?MQAf;AO(}Wp^)SZ%g1CU{&u=W!sxAL(hto z@k=50)2avme8Ol`W#al~JH5HIO)UQPSW68$KW@!gt{A5hK%99Q)-Q;5!&j(FTEe)b zV$ifok03m>`Iuzm>T$M#wnijYfi7*tR?VM@OVS>p-)+fUc|{YQKz&j>%T1(M+j|?f zoS7YgnU$`cJ$uqmW${ocs@igdr=|NdpY%$ZQX3bpFrkU+jN;$Uwr+2)m&rkc#(ktE zcQWwjU>zAqktzejc&*1YKVI@L+uaA+?EGH9*nB%C1 z?o6B>{83xO)3^s1e8#my@@=T+)J1kP9*Zkd>vf~XCH%@lgv6idNlF>w7-dVTQ!Jmg z)qg4&E|16!r$ZUX1>cFSb-e%|An2K|fk29aAnsCOaI$(raFdiVE1;E? zjjVd67x33R&fT1GbDbT_u*bl9^-)%Jy}#|BW|Zq_>h!IRZJfiHTyQxoe&{%+=y24& z-7V7ksK%p?P^3Q2$|K_6Gsqo9;{!3|@8FKC7Z4wsk*yMnq|GZgvg6*jf4I?|Ye(bj z<9c?W!V~DOvG_$Y4~}clELqJ?Z#lKJgm+V!S-E1azOPY?>O}Y+9c^xqS5MhS|CWomj&iT)|hQu&Ju9BItmPH!QZ5!(Z9%I!qkf zen5@Z3*?9uas6eZdf3HV=U3d~8iy?5A7&I`o#6BkI^Q=DG#FRBDPUsP%aiR}{bt=p z3p3*DuV-jkzIjyx8+zT3QJ_fabRcJLEiP%9HjIP0O^#hx-NP+lZ$P)vKT~s>;Uf@moX_R+|96e@f>(=6m|Y8Kb&D!j)Xn{`;okSiGXf%qy=h#u3S{0;!Jq9=>%z3${}E?jJM3zQPYZ2zTT=%$GU~5 zsV8%)`0E#cu5=rPO{e}0kqZ(|S9rB?(g&c~%*-355s1%_?drE&MY`|MK!d^CY&kG* zX@d7??;IN=OYF;rI>Zjz z^0pWxcH2s8Cn?8Z3?ZM;fE#praNoOX!S!qw7qM~9RH#!TkYmZCH3QFl3W9AI45RR# zgPxhkZAg}pp9DjC&|Fwz5O%%!$}Q=g;(+B;EBbZ(tK&@0Jy@o6KXvPuK2Cf)N9$im zxGPCYZqJLx+!ltuXUptSyUi~5S+n9Rb0j}tn#-u4gwMLA<%nO2*|C@9Ctnnm|3N&R zKy&IWF}*;p_`xq$!Wcdsoot2G6#?ELzhpCkGi{p|m6YYqR=BrYbXRqC$*>dt1UYlV z!EYRtkNT=0F+g@YekH0zCw*U?C|d^ED8Nl=5_Z@FB3jR)k_5(B?e2{Dk)N&0vwHVe zsFB;%q8DnI;lwf**m{fe4Sa+2Q6TTG0q&LB@xv%@u}yV#b^Zp^&9PR~PR6oR%jB_W zMD=)2MwJX6HeR=&mR_GA%S zZ}@mnlH^sjYL5dYxG%Ht9n7@!$cvmZg8ceLvW2_1k|{QNygakE4>A#E5fS0a=7UOD zYNThDh*4VANJum>lZiJKhx=mNQ0;;`j?q&ki50Ez84@tYh%5fy}U5b9w8^8c$8cb?dMA6*YRN4_c;8In=I<*%OZ{Ro9tLD#2 zi&Uty=@FX0pl&TunVE-N<5h| zvlMa0!P&$Sz*qPUK1l?Vy+JM!L;w>0iyp6?xfBC>p!P1#1Yve%~db zv^aTrig#!MXEMQtK8Q==6zW?zEqw#!0Nc(NnSw-Gt327u#w35Pnh5$iw5OLGo}LzX zSX0wTouh{rL{_xS!-JxIDLuM-*e5MaO;OrLyyZ8Gya)GTCff>a%(H7a`uBWK7zUB> zs?C^{e8{1OZ-cwyj$%a_`$62E42Jl%TQClt&>Jh!Q_;&D*N`T9YK^>Q%*aq_k?0Nm z0uu!ID^@F7BG+9Bi|JIT(OsW~dlhT%;F!Fsh88TdKzc?uvwy$_u8i3EpDz2>`SQdz zwib_6no=_czdaEt^}^{p1UyeRqbs^qRz>ZhmSfg=l>8VyA%$nr>GlF_Ky6Cr76*-r zRzUFWqAN}w6_~;JWpWwTr3Cqh%I;CUU<@J?V`yNR8i&hRDNMCk_n`D-h95>$^ZdP$ z60{21V0^OVTC`tti*z}ZO`gwfsAzhUasicPXi)PNj@qKtB2SvSg?o7X~nUXvI# zoUmS2=gyI*eWimotQOFM)L=fV)z(Ct-u?7doHKJhV{HUuK9kN77Hzn5O|_O5-4hAgDaFs^7>{p%R$;@83=Q1Th>ArWQu_h z)#{#;64=iiB<#l#Zt9mLGXCXYkq*HAA9GnXIuzn4Hbyz7qhfCh#CV-lsocfh1G)^gHx4tn#l=a@sw06 z2*p2gSi&HJ;-JnQ5x=M*{04hHxm&|qdNL2^g@fU8MpO)QeU)R~l~eum7#r!P8fR9l zgN{Be*=df|HY(=_N=Oqz^-9$t^M$+k!g~TIpa!(#DN7Rk?yI zzHfAjg`p6vGgp)XZepZ$wgq2xfqvR7H-vWwX|ZsR8#|$_lBMIcTI?KVx?qN_n<~;i zVKr*iRR80!`VqOj zLi<{NHu zAia%q_jO!9wLUcB@`fSM8+qDXi5A=~)NTS%NnqTAz9fyA#QQsnui~g`NIEKWbb{>g zvIo>-OTT>8Y+-F5jnLa>;viR+254rYD*JY!5E(RwXlX-@RIb(cEf9}haBD&K)rqRz zFb1XfK#7t~3t<|%e&jE9bW~rYIkZCsH>WzW|D_IqRjpp8_p{NZNiLE%DSi#^usFSb z43JhjyhQ7zlVza8c_F5H_(*r(&wU=Yb48%of9RyQ`L*TDk6VyBWJGvXtuM04N41$4 zboSnfd4an@wC*86$2WcUT<9B(Bw2hX#N}hEz6@5qY}TfUp~g8wDKDWZB;RxZ>_9Vv zKApQf%jwy7;6sVqYNBFWy&e;aYa4G$3|4~Jj1&ybX8e>7D0kv*$lbda)%@X%%sbS< z`xkD?=TZ&>R_PkfBUDMBmtp_%bWFInk`@r`ApP9fGyC1A+qi2~2^UVH>3@_w7oUc z|Nr~*0E+tu3H*lgB-VL zksG&ICUZ3LRhfOvWGR{@fq1J)RJ_$HPHk-SMS zrE5EUGKfwCgXw@DxEj<1waTJTsy?s`qhZagTPfVyZ3;OCq}AyKzfU4^-w3*1VT(Hv zIPvd1_Z~g}K}uEZo&3sq-zrh&Y1}uQKooY7jb~Uhvr8La0xg zjOe==YLD$pYA}(Bdi2(AZ{eMA@JsF#kPvs!yR9gNodAb|p!oz{eV{D>>h;Z+){aas zE8ao}DVoM(qxG&dsdB3aEtN>KF9TxbxPL*74eE3$o$e3mNnMvq3sW*?>Yxv8MP?1% z$tuO3V4~R64S7_m%zL}97vDOmXvw-6FXb%%AzDaJvY)~m^PBvDAtsS15SCRxz$O^K zty~A(Ng3Li_#JDnlR-DSuS>*84c}-wzWL#7JYHBoUFU-Yv}BCZfjo#!LCh;U27>#U zu=vKK&KJSQ`8zmyJ>o>GK|EQ4NU|uU8~rHM0|V^Fv-!?XELtimaVG0oGRw`uNNdrq z#43EP^`iNP1wd?I1@7yI7`|d6b`-AcUzv6owdF;1l<`2Q#H(SM4+dbUkK0IXcLP8l zUe1p=f$&8~U%YCc>~eh}y!HUXMtfu|%t7z5d)-%(Fk}pf*Wt{&)YalOy*X}swXyK* zOLt9)1F-Ru$yJCxmSL`QjzVx?$fAVsEQrAG)=|W#ikpsNO0Y@fn@HlZg2G;thX#nZcfgiBBiFgd3i>B z3uy8C4Q|a$0N$>IzRHUJhPWz4rX)gikhr{jr-z9=J77v^Zt!RUv)8r-cm>J=`#9X_ zOwS;%oVebGh5hVwrY2Xo-BVBktv_PS$R@XNS^|d|Ez_KrLUSy}M|dcRjzJ#-?+xc9 z7lue&i7ogG>UGEZA->>@^^HUKV1`8S>Iura8tM4VC8~niri=`svx?!};4i8&coO~c z&G3zSF-hd@IVaJ7qnaNri%Ci42{mO#u!AFOHYw>@3a!8k8zZpB+rl{#MjiMz6zS~6 zGDGS{Y#t>$fx632k*qjjcp%%bM2nx3ENac2W7{q4vPNs>gpwBy5%RqjxzK6&I`P;Q z;u56?rr!r;r4advOEK!egEm(2e~!zW)ZosU*5LL~+}rU~;sehRSx=1FXy<%LG{r)d zXYFK~vnpmjRv@fG`&!S-G--*>1Fmq9LuXp4)h!a<50J_<@y&B<*u*b{jzMc<*fExE zYoFLL-uZ6?)hy>pfnnOEBGvvyD?wLjxJjhkpHW}2S#TNLE4nG8^+(2Kujf{J&ViZZ zx^6}{OKcs%6lSyRgUM$+k7TZD(C=UiB`^PsV$uEr{~2L^s}jDI0`*ijSSdc=L2A@P_R}X2%{u14*;zKjJVZ!U<^<5gQKI2>4gYDAhfMBvYe;P_I+IJvQF{dQx1& zJ09e$%FdhT8PO{gy_9g~&&bQlrax01ZK7k((qaQj_?b>33oNilRbV7KNS5K2Id=tQRclblMBJ7c=^Rd?9aO zhpK4z(=1K>J>5}|Cx1lG?+dEs71}ulRCT%fz1gB5klMOxO12U|*F^QuJ~Lut%^mY`#EE2S0TMjYX4ZDZvF!Q~n^~0)2>V^yaV*b(FVmhVx$lof8-}HoxPpWxkQtAquGSUO*z0@Hi z!T7tSevvhAx)z`K)ECD}&;lAzt*g$904HM_Yue?x3v*uO@{Q{p)$;5r)RXvX^FmG2 z3%jO0kI((MCJ4Vo?626_hEcZV**2xT^;-I!`;6^II6j>36vL_+CR0hrrI*=RM&TEy zS;v`Tm!0Pk3DqM8`LP>IaE;TSHZm-luSaYu(p_fJR2StQ0FH8;x$@DKgxOfE6P|~$ z8X~m8wd~6p)2=Bc&4WpgZd6LIk#sf)i8!IiaO;#gh-h{&oRBP|*6J;^1=0JY%2<|R zvDVgS-KreCwb{}GxGZ4fDfm3$He}Q&p6H>wiTR0AN2(bp)`Nh;(Z6>7pav99i2pa; z|7C9bf~0}efsBBhfa-wSfyRQCg8c+D04oN&0Ve}@0#5`V2ET+Th4_L*fh2^Kfpmn7 zfXs)ihx`Kt1?30T2lWTq2-*v}4tfs;4n`6t8>Sj&<%hx#^B=)Kntn|GIR5bpO9^WN z+YAQ>X9QOOj}IROUk|^80EWPX;DPWP5gpMI@e?T%84cMIIR$y>r@+rP6k(KV)F3o* zG$1-Ex;lC``Y8G)1}X*_1{)?CrX^-M7A%$!mK#<%0?oJU*~ zTqayw+;ZG`JPEu4yj^^3d>MRi{0jmW0#AYlf>S~~LR%snqEuo8Vmsmq5^<7FQZ!O4 z(or&OGHbG0ay)Wsa!ztxa!>L=@<{Sj@pDRAy8TR320TR54WPRK-+vRGn1A zRP$6@RA*F=)F9Mw)R@#H)CSbq)Wy^fG(t4SG$AxaH2pMdG`F;9v|P02wAr-dw4Zc8 z=_u&b=z{4%=#A*D=*#F28HgBo7}OZN81fkQ7>OAr7;P9c82gw&nE07YnWCAJ|G)iX z=rPccC>&Fm8;Cw73Stf=0m2y$CgQOXo5=14E(9+&ie;{VYHn^lIJK6QxsEw5?F0J~ z$V2)61SbL5{>eN&h4C%@l{C@`ChsDEx)0T_9tv0iWu@pzz;8cNTCzcn8Xz3NSCy@ zxt=2m2S{l6kCkDWlXSn;g^Us^Nmv#MOds+ zHZMYO!z0;KR7@c8u5MVX4*hVNb85ZJ8-ks>8H{66+6s1X!nQ+tuT&kzJ}G~?>&K{T zxaE$1@prz}`&SKp6@8Pev~hZ398P)jad|^8y&=|c(h^}cx4gnv3!TmFmFJnajc-muNW&nf#Sqv#aije^g001g50nz{fT)`TP literal 0 HcmV?d00001 diff --git a/dist/fonts/roboto-mono-latin-400-normal.b889d0d8.woff b/dist/fonts/roboto-mono-latin-400-normal.b889d0d8.woff new file mode 100644 index 0000000000000000000000000000000000000000..60cf13bab7f1f95d77a3065d70d53657576a182d GIT binary patch literal 15232 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 literal 0 HcmV?d00001 diff --git a/dist/fonts/roboto-mono-latin-400-normal.d3026ee2.woff2 b/dist/fonts/roboto-mono-latin-400-normal.d3026ee2.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f8894bab50f641e86f695e85830a74dd395732fa GIT binary patch literal 12312 zcmV+zFz3&APew8T0RR9105BK;4gdfE09Tv<0584(0RR9100000000000000000000 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 J44ef3{y!fr1N#5~ literal 0 HcmV?d00001 diff --git a/dist/icons/favicon-128x128.png b/dist/icons/favicon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..14011761929f4ffbef81be318a347c0032eb6f42 GIT binary patch literal 12324 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 h$J#u>{O`^5_NoneBot Plugin Go-CQHTTP

\ No newline at end of file diff --git a/dist/js/0.c5676287.js b/dist/js/0.c5676287.js new file mode 100644 index 00000000..a344ab72 --- /dev/null +++ b/dist/js/0.c5676287.js @@ -0,0 +1 @@ +"use strict";(globalThis["webpackChunkfrontend"]=globalThis["webpackChunkfrontend"]||[]).push([[0],{25206:(e,t,i)=>{i.d(t,{NC:()=>o,aj:()=>r});let n="undefined"!==typeof document&&document.location&&document.location.hash.indexOf("pseudo=true")>=0;function s(e,t){let i;return i=0===t.length?e:e.replace(/\{(\d+)\}/g,((e,i)=>{const n=i[0],s=t[n];let o=e;return"string"===typeof s?o=s:"number"!==typeof s&&"boolean"!==typeof s&&void 0!==s&&null!==s||(o=String(s)),o})),n&&(i="["+i.replace(/[aouei]/g,"$&$&")+"]"),i}function o(e,t,...i){return s(t,i)}function r(e){}},93516:(e,t,i)=>{i.d(t,{A:()=>h});var n=i(2548),s=i(11271),o=i(70959),r=i(55907),a=i(47596),c=i(37174),u=i(38079),l=function(e,t,i,n){var s,o=arguments.length,r=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(s=e[a])&&(r=(o<3?s(r):o>3?s(t,i,r):s(t,i))||r);return o>3&&r&&Object.defineProperty(t,i,r),r},d=function(e,t){return function(i,n){t(i,n,e)}};let h=class extends o.JT{constructor(e,t,i){super(),this._contextKeyService=e,this._layoutService=t,this._configurationService=i,this._accessibilitySupport=0,this._onDidChangeScreenReaderOptimized=new s.Q5,this._onDidChangeReducedMotion=new s.Q5,this._accessibilityModeEnabledContext=r.U.bindTo(this._contextKeyService);const n=()=>this._accessibilityModeEnabledContext.set(this.isScreenReaderOptimized());this._register(this._configurationService.onDidChangeConfiguration((e=>{e.affectsConfiguration("editor.accessibilitySupport")&&(n(),this._onDidChangeScreenReaderOptimized.fire()),e.affectsConfiguration("workbench.reduceMotion")&&(this._configMotionReduced=this._configurationService.getValue("workbench.reduceMotion"),this._onDidChangeReducedMotion.fire())}))),n(),this._register(this.onDidChangeScreenReaderOptimized((()=>n())));const o=window.matchMedia("(prefers-reduced-motion: reduce)");this._systemMotionReduced=o.matches,this._configMotionReduced=this._configurationService.getValue("workbench.reduceMotion"),this.initReducedMotionListeners(o)}initReducedMotionListeners(e){if(!this._layoutService.hasContainer)return;this._register((0,n.nm)(e,"change",(()=>{this._systemMotionReduced=e.matches,"auto"===this._configMotionReduced&&this._onDidChangeReducedMotion.fire()})));const t=()=>{const e=this.isMotionReduced();this._layoutService.container.classList.toggle("reduce-motion",e),this._layoutService.container.classList.toggle("enable-motion",!e)};t(),this._register(this.onDidChangeReducedMotion((()=>t())))}get onDidChangeScreenReaderOptimized(){return this._onDidChangeScreenReaderOptimized.event}isScreenReaderOptimized(){const e=this._configurationService.getValue("editor.accessibilitySupport");return"on"===e||"auto"===e&&2===this._accessibilitySupport}get onDidChangeReducedMotion(){return this._onDidChangeReducedMotion.event}isMotionReduced(){const e=this._configMotionReduced;return"on"===e||"auto"===e&&this._systemMotionReduced}getAccessibilitySupport(){return this._accessibilitySupport}};h=l([d(0,c.i6),d(1,u.F),d(2,a.Ui)],h)},55907:(e,t,i)=>{i.d(t,{F:()=>o,U:()=>r});var n=i(37174),s=i(21881);const o=(0,s.yh)("accessibilityService"),r=new n.uy("accessibilityModeEnabled",!1)},5019:(e,t,i)=>{i.d(t,{v:()=>O});var n=i(2548),s=i(78089),o=i(70959),r=i(25206),a=i(64347),c=i(51442),u=i(8419),l=i(47606),d=i(99588),h=i(93753),p=i(15285),g=i(22454),f=i(47277),y=function(e,t,i,n){var s,o=arguments.length,r=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(s=e[a])&&(r=(o<3?s(r):o>3?s(t,i,r):s(t,i))||r);return o>3&&r&&Object.defineProperty(t,i,r),r},m=function(e,t){return function(i,n){t(i,n,e)}};const C="acceptSelectedCodeAction",v="previewSelectedCodeAction";class _{get templateId(){return"header"}renderTemplate(e){e.classList.add("group-header");const t=document.createElement("span");return e.append(t),{container:e,text:t}}renderElement(e,t,i){var n,s;i.text.textContent=null!==(s=null===(n=e.group)||void 0===n?void 0:n.title)&&void 0!==s?s:""}disposeTemplate(e){}}let b=class{get templateId(){return"action"}constructor(e,t){this._supportsPreview=e,this._keybindingService=t}renderTemplate(e){e.classList.add(this.templateId);const t=document.createElement("div");t.className="icon",e.append(t);const i=document.createElement("span");i.className="title",e.append(i);const n=new a.e(e,l.OS);return{container:e,icon:t,text:i,keybinding:n}}renderElement(e,t,i){var s,o,a;if((null===(s=e.group)||void 0===s?void 0:s.icon)?(i.icon.className=d.k.asClassName(e.group.icon),e.group.icon.color&&(i.icon.style.color=(0,f.n_1)(e.group.icon.color.id))):(i.icon.className=d.k.asClassName(u.l.lightBulb),i.icon.style.color="var(--vscode-editorLightBulb-foreground)"),!e.item||!e.label)return;i.text.textContent=S(e.label),i.keybinding.set(e.keybinding),n.iJ(!!e.keybinding,i.keybinding.element);const c=null===(o=this._keybindingService.lookupKeybinding(C))||void 0===o?void 0:o.getLabel(),l=null===(a=this._keybindingService.lookupKeybinding(v))||void 0===a?void 0:a.getLabel();i.container.classList.toggle("option-disabled",e.disabled),e.disabled?i.container.title=e.label:c&&l?this._supportsPreview?i.container.title=(0,r.NC)({key:"label-preview",comment:['placeholders are keybindings, e.g "F2 to apply, Shift+F2 to preview"']},"{0} to apply, {1} to preview",c,l):i.container.title=(0,r.NC)({key:"label",comment:['placeholder is a keybinding, e.g "F2 to apply"']},"{0} to apply",c):i.container.title=""}disposeTemplate(e){}};b=y([m(1,p.d)],b);class w extends UIEvent{constructor(){super("acceptSelectedAction")}}class x extends UIEvent{constructor(){super("previewSelectedAction")}}let k=class extends o.JT{constructor(e,t,i,n,s,o){super(),this._delegate=n,this._contextViewService=s,this._keybindingService=o,this._actionLineHeight=24,this._headerLineHeight=26,this.domNode=document.createElement("div"),this.domNode.classList.add("actionList");const a={getHeight:e=>"header"===e.kind?this._headerLineHeight:this._actionLineHeight,getTemplateId:e=>e.kind};this._list=this._register(new c.aV(e,this.domNode,a,[new b(t,this._keybindingService),new _],{keyboardSupport:!1,accessibilityProvider:{getAriaLabel:e=>{if("action"===e.kind){let t=e.label?S(null===e||void 0===e?void 0:e.label):"";return e.disabled&&(t=(0,r.NC)({key:"customQuickFixWidget.labels",comment:["Action widget labels for accessibility."]},"{0}, Disabled Reason: {1}",t,e.disabled)),t}return null},getWidgetAriaLabel:()=>(0,r.NC)({key:"customQuickFixWidget",comment:["An action widget option"]},"Action Widget"),getRole:e=>"action"===e.kind?"option":"separator",getWidgetRole:()=>"listbox"}})),this._list.style(g.O2),this._register(this._list.onMouseClick((e=>this.onListClick(e)))),this._register(this._list.onMouseOver((e=>this.onListHover(e)))),this._register(this._list.onDidChangeFocus((()=>this._list.domFocus()))),this._register(this._list.onDidChangeSelection((e=>this.onListSelection(e)))),this._allMenuItems=i,this._list.splice(0,this._list.length,this._allMenuItems),this._list.length&&this.focusNext()}focusCondition(e){return!e.disabled&&"action"===e.kind}hide(e){this._delegate.onHide(e),this._contextViewService.hideContextView()}layout(e){const t=this._allMenuItems.filter((e=>"header"===e.kind)).length,i=this._allMenuItems.length*this._actionLineHeight,n=i+t*this._headerLineHeight-t*this._actionLineHeight;this._list.layout(n);const s=this._allMenuItems.map(((e,t)=>{const i=document.getElementById(this._list.getElementID(t));if(i){i.style.width="auto";const e=i.getBoundingClientRect().width;return i.style.width="",e}return 0})),o=Math.max(...s,e),r=.7,a=Math.min(n,document.body.clientHeight*r);return this._list.layout(a,o),this.domNode.style.height=`${a}px`,this._list.domFocus(),o}focusPrevious(){this._list.focusPrevious(1,!0,void 0,this.focusCondition)}focusNext(){this._list.focusNext(1,!0,void 0,this.focusCondition)}acceptSelected(e){const t=this._list.getFocus();if(0===t.length)return;const i=t[0],n=this._list.element(i);if(!this.focusCondition(n))return;const s=e?new x:new w;this._list.setSelection([i],s)}onListSelection(e){if(!e.elements.length)return;const t=e.elements[0];t.item&&this.focusCondition(t)?this._delegate.onSelect(t.item,e.browserEvent instanceof x):this._list.setSelection([])}onListHover(e){this._list.setFocus("number"===typeof e.index?[e.index]:[])}onListClick(e){e.element&&this.focusCondition(e.element)&&this._list.setFocus([])}};function S(e){return e.replace(/\r\n|\r|\n/g," ")}k=y([m(4,h.u),m(5,p.d)],k);var T=i(82693),M=i(37174),I=i(39326),N=i(21881),A=function(e,t,i,n){var s,o=arguments.length,r=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(s=e[a])&&(r=(o<3?s(r):o>3?s(t,i,r):s(t,i))||r);return o>3&&r&&Object.defineProperty(t,i,r),r},E=function(e,t){return function(i,n){t(i,n,e)}};const D={Visible:new M.uy("codeActionMenuVisible",!1,(0,r.NC)("codeActionMenuVisible","Whether the action widget list is visible"))},O=(0,N.yh)("actionWidgetService");let R=class extends o.JT{get isVisible(){return D.Visible.getValue(this._contextKeyService)||!1}constructor(e,t,i){super(),this._contextViewService=e,this._contextKeyService=t,this._instantiationService=i,this._list=this._register(new o.XK)}show(e,t,i,n,s,o,r){const a=D.Visible.bindTo(this._contextKeyService),c=this._instantiationService.createInstance(k,e,t,i,n);this._contextViewService.showContextView({getAnchor:()=>s,render:e=>(a.set(!0),this._renderWidget(e,c,null!==r&&void 0!==r?r:[])),onHide:e=>{a.reset(),this._onWidgetClosed(e)}},o,!1)}acceptSelected(e){var t;null===(t=this._list.value)||void 0===t||t.acceptSelected(e)}focusPrevious(){var e,t;null===(t=null===(e=this._list)||void 0===e?void 0:e.value)||void 0===t||t.focusPrevious()}focusNext(){var e,t;null===(t=null===(e=this._list)||void 0===e?void 0:e.value)||void 0===t||t.focusNext()}hide(){var e;null===(e=this._list.value)||void 0===e||e.hide(),this._list.clear()}_renderWidget(e,t,i){var s;const r=document.createElement("div");if(r.classList.add("action-widget"),e.appendChild(r),this._list.value=t,!this._list.value)throw new Error("List has no value");r.appendChild(this._list.value.domNode);const a=new o.SL,c=document.createElement("div"),u=e.appendChild(c);u.classList.add("context-view-block"),a.add(n.nm(u,n.tw.MOUSE_DOWN,(e=>e.stopPropagation())));const l=document.createElement("div"),d=e.appendChild(l);d.classList.add("context-view-pointerBlock"),a.add(n.nm(d,n.tw.POINTER_MOVE,(()=>d.remove()))),a.add(n.nm(d,n.tw.MOUSE_DOWN,(()=>d.remove())));let h=0;if(i.length){const e=this._createActionBar(".action-widget-action-bar",i);e&&(r.appendChild(e.getContainer().parentElement),a.add(e),h=e.getContainer().offsetWidth)}const p=null===(s=this._list.value)||void 0===s?void 0:s.layout(h);r.style.width=`${p}px`;const g=a.add(n.go(e));return a.add(g.onDidBlur((()=>this.hide()))),a}_createActionBar(e,t){if(!t.length)return;const i=n.$(e),o=new s.o(i);return o.push(t,{icon:!1,label:!0}),o}_onWidgetClosed(e){var t;null===(t=this._list.value)||void 0===t||t.hide(e)}};R=A([E(0,h.u),E(1,M.i6),E(2,N.TG)],R),(0,I.z)(O,R,1);const P=1100;(0,T.r1)(class extends T.Ke{constructor(){super({id:"hideCodeActionWidget",title:{value:(0,r.NC)("hideCodeActionWidget.title","Hide action widget"),original:"Hide action widget"},precondition:D.Visible,keybinding:{weight:P,primary:9,secondary:[1033]}})}run(e){e.get(O).hide()}}),(0,T.r1)(class extends T.Ke{constructor(){super({id:"selectPrevCodeAction",title:{value:(0,r.NC)("selectPrevCodeAction.title","Select previous action"),original:"Select previous action"},precondition:D.Visible,keybinding:{weight:P,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}})}run(e){const t=e.get(O);t instanceof R&&t.focusPrevious()}}),(0,T.r1)(class extends T.Ke{constructor(){super({id:"selectNextCodeAction",title:{value:(0,r.NC)("selectNextCodeAction.title","Select next action"),original:"Select next action"},precondition:D.Visible,keybinding:{weight:P,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}})}run(e){const t=e.get(O);t instanceof R&&t.focusNext()}}),(0,T.r1)(class extends T.Ke{constructor(){super({id:C,title:{value:(0,r.NC)("acceptSelected.title","Accept selected action"),original:"Accept selected action"},precondition:D.Visible,keybinding:{weight:P,primary:3,secondary:[2137]}})}run(e){const t=e.get(O);t instanceof R&&t.acceptSelected()}}),(0,T.r1)(class extends T.Ke{constructor(){super({id:v,title:{value:(0,r.NC)("previewSelected.title","Preview selected action"),original:"Preview selected action"},precondition:D.Visible,keybinding:{weight:P,primary:2051}})}run(e){const t=e.get(O);t instanceof R&&t.acceptSelected(!0)}})},45940:(e,t,i)=>{i.d(t,{R:()=>s});var n=i(25206);const s=Object.freeze({View:{value:(0,n.NC)("view","View"),original:"View"},Help:{value:(0,n.NC)("help","Help"),original:"Help"},Test:{value:(0,n.NC)("test","Test"),original:"Test"},File:{value:(0,n.NC)("file","File"),original:"File"},Preferences:{value:(0,n.NC)("preferences","Preferences"),original:"Preferences"},Developer:{value:(0,n.NC)({key:"developer",comment:["A developer on Code itself or someone diagnosing issues in Code"]},"Developer"),original:"Developer"}})},94700:(e,t,i)=>{i.d(t,{Mm:()=>O,Id:()=>V,vr:()=>E,LJ:()=>A});var n=i(2548),s=i(45429),o=i(32487),r=i(29031),a=i(10205),c=i(9501),u=i(70959),l=i(47606),d=i(25206),h=i(82693);function p(e){return!!e&&void 0!==e.condition}var g=i(37174),f=i(93753),y=i(21881),m=i(15285),C=i(18736),v=i(51906),_=i(32656),b=i(99588),w=i(71976),x=i(55455),k=i(47277),S=i(22454),T=i(55907),M=function(e,t,i,n){var s,o=arguments.length,r=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(s=e[a])&&(r=(o<3?s(r):o>3?s(t,i,r):s(t,i))||r);return o>3&&r&&Object.defineProperty(t,i,r),r},I=function(e,t){return function(i,n){t(i,n,e)}},N=function(e,t,i,n){function s(e){return e instanceof i?e:new i((function(t){t(e)}))}return new(i||(i=Promise))((function(i,o){function r(e){try{c(n.next(e))}catch(t){o(t)}}function a(e){try{c(n["throw"](e))}catch(t){o(t)}}function c(e){e.done?i(e.value):s(e.value).then(r,a)}c((n=n.apply(e,t||[])).next())}))};function A(e,t,i,s){const o=e.getActions(t),r=n._q.getInstance(),a=r.keyStatus.altKey||(l.ED||l.IJ)&&r.keyStatus.shiftKey;D(o,i,a,s?e=>e===s:e=>"navigation"===e)}function E(e,t,i,n,s,o){const r=e.getActions(t),a="string"===typeof n?e=>e===n:n;D(r,i,!1,a,s,o)}function D(e,t,i,n=(e=>"navigation"===e),s=(()=>!1),o=!1){let r,c;Array.isArray(t)?(r=t,c=t):(r=t.primary,c=t.secondary);const u=new Set;for(const[l,d]of e){let e;n(l)?(e=r,e.length>0&&o&&e.push(new a.Z0)):(e=c,e.length>0&&e.push(new a.Z0));for(let t of d){i&&(t=t instanceof h.U8&&t.alt?t.alt:t);const n=e.push(t);t instanceof a.wY&&u.add({group:l,action:t,index:n-1})}}for(const{group:a,action:l,index:d}of u){const e=n(a)?r:c,t=l.actions;t.length<=1&&s(l,a,e.length)&&e.splice(d,1,...t)}}let O=class extends o.gU{constructor(e,t,i,s,o,r,a,c){super(void 0,e,{icon:!(!e.class&&!e.item.icon),label:!e.class&&!e.item.icon,draggable:null===t||void 0===t?void 0:t.draggable,keybinding:null===t||void 0===t?void 0:t.keybinding,hoverDelegate:null===t||void 0===t?void 0:t.hoverDelegate}),this._keybindingService=i,this._notificationService=s,this._contextKeyService=o,this._themeService=r,this._contextMenuService=a,this._accessibilityService=c,this._wantsAltCommand=!1,this._itemClassDispose=this._register(new u.XK),this._altKey=n._q.getInstance()}get _menuItemAction(){return this._action}get _commandAction(){return this._wantsAltCommand&&this._menuItemAction.alt||this._menuItemAction}onClick(e){return N(this,void 0,void 0,(function*(){e.preventDefault(),e.stopPropagation();try{yield this.actionRunner.run(this._commandAction,this._context)}catch(t){this._notificationService.error(t)}}))}render(e){if(super.render(e),e.classList.add("menu-entry"),this.options.icon&&this._updateItemClass(this._menuItemAction.item),this._menuItemAction.alt){let t=!1;const i=()=>{var e;const i=!!(null===(e=this._menuItemAction.alt)||void 0===e?void 0:e.enabled)&&(!this._accessibilityService.isMotionReduced()||t)&&(this._altKey.keyStatus.altKey||this._altKey.keyStatus.shiftKey&&t);i!==this._wantsAltCommand&&(this._wantsAltCommand=i,this.updateLabel(),this.updateTooltip(),this.updateClass())};this._register(this._altKey.event(i)),this._register((0,n.nm)(e,"mouseleave",(e=>{t=!1,i()}))),this._register((0,n.nm)(e,"mouseenter",(e=>{t=!0,i()}))),i()}}updateLabel(){this.options.label&&this.label&&(this.label.textContent=this._commandAction.label)}getTooltip(){var e;const t=this._keybindingService.lookupKeybinding(this._commandAction.id,this._contextKeyService),i=t&&t.getLabel(),n=this._commandAction.tooltip||this._commandAction.label;let s=i?(0,d.NC)("titleAndKb","{0} ({1})",n,i):n;if(!this._wantsAltCommand&&(null===(e=this._menuItemAction.alt)||void 0===e?void 0:e.enabled)){const e=this._menuItemAction.alt.tooltip||this._menuItemAction.alt.label,t=this._keybindingService.lookupKeybinding(this._menuItemAction.alt.id,this._contextKeyService),i=t&&t.getLabel(),n=i?(0,d.NC)("titleAndKb","{0} ({1})",e,i):e;s=(0,d.NC)("titleAndKbAndAlt","{0}\n[{1}] {2}",s,c.xo.modifierLabels[l.OS].altKey,n)}return s}updateClass(){this.options.icon&&(this._commandAction!==this._menuItemAction?this._menuItemAction.alt&&this._updateItemClass(this._menuItemAction.alt.item):this._updateItemClass(this._menuItemAction.item))}_updateItemClass(e){this._itemClassDispose.value=void 0;const{element:t,label:i}=this;if(!t||!i)return;const s=this._commandAction.checked&&p(e.toggled)&&e.toggled.icon?e.toggled.icon:e.icon;if(s)if(b.k.isThemeIcon(s)){const e=b.k.asClassNameArray(s);i.classList.add(...e),this._itemClassDispose.value=(0,u.OF)((()=>{i.classList.remove(...e)}))}else i.style.backgroundImage=(0,w._T)(this._themeService.getColorTheme().type)?(0,n.wY)(s.dark):(0,n.wY)(s.light),i.classList.add("icon"),this._itemClassDispose.value=(0,u.F8)((0,u.OF)((()=>{i.style.backgroundImage="",i.classList.remove("icon")})),this._themeService.onDidColorThemeChange((()=>{this.updateClass()})))}};O=M([I(2,m.d),I(3,C.lT),I(4,g.i6),I(5,_.XE),I(6,f.i),I(7,T.F)],O);let R=class extends r.C{constructor(e,t,i,n,s){var o,r,a;const c=Object.assign(Object.assign({},t),{menuAsChild:null!==(o=null===t||void 0===t?void 0:t.menuAsChild)&&void 0!==o&&o,classNames:null!==(r=null===t||void 0===t?void 0:t.classNames)&&void 0!==r?r:b.k.isThemeIcon(e.item.icon)?b.k.asClassName(e.item.icon):void 0,keybindingProvider:null!==(a=null===t||void 0===t?void 0:t.keybindingProvider)&&void 0!==a?a:e=>i.lookupKeybinding(e.id)});super(e,{getActions:()=>e.actions},n,c),this._keybindingService=i,this._contextMenuService=n,this._themeService=s}render(e){super.render(e),(0,x.p_)(this.element),e.classList.add("menu-entry");const t=this._action,{icon:i}=t.item;if(i&&!b.k.isThemeIcon(i)){this.element.classList.add("icon");const e=()=>{this.element&&(this.element.style.backgroundImage=(0,w._T)(this._themeService.getColorTheme().type)?(0,n.wY)(i.dark):(0,n.wY)(i.light))};e(),this._register(this._themeService.onDidColorThemeChange((()=>{e()})))}}};R=M([I(2,m.d),I(3,f.i),I(4,_.XE)],R);let P=class extends o.YH{constructor(e,t,i,n,s,o,c,u){var l,d,p;let g;super(null,e),this._keybindingService=i,this._notificationService=n,this._contextMenuService=s,this._menuService=o,this._instaService=c,this._storageService=u,this._container=null,this._options=t,this._storageKey=`${e.item.submenu.id}_lastActionId`;const f=(null===t||void 0===t?void 0:t.persistLastActionId)?u.get(this._storageKey,1):void 0;f&&(g=e.actions.find((e=>f===e.id))),g||(g=e.actions[0]),this._defaultAction=this._instaService.createInstance(O,g,{keybinding:this._getDefaultActionKeybindingLabel(g)});const y=Object.assign(Object.assign({keybindingProvider:e=>this._keybindingService.lookupKeybinding(e.id)},t),{menuAsChild:null===(l=null===t||void 0===t?void 0:t.menuAsChild)||void 0===l||l,classNames:null!==(d=null===t||void 0===t?void 0:t.classNames)&&void 0!==d?d:["codicon","codicon-chevron-down"],actionRunner:null!==(p=null===t||void 0===t?void 0:t.actionRunner)&&void 0!==p?p:new a.Wi});this._dropdown=new r.C(e,e.actions,this._contextMenuService,y),this._dropdown.actionRunner.onDidRun((e=>{e.action instanceof h.U8&&this.update(e.action)}))}update(e){var t;(null===(t=this._options)||void 0===t?void 0:t.persistLastActionId)&&this._storageService.store(this._storageKey,e.id,1,1),this._defaultAction.dispose(),this._defaultAction=this._instaService.createInstance(O,e,{keybinding:this._getDefaultActionKeybindingLabel(e)}),this._defaultAction.actionRunner=new class extends a.Wi{runAction(e,t){return N(this,void 0,void 0,(function*(){yield e.run(void 0)}))}},this._container&&this._defaultAction.render((0,n.Ce)(this._container,(0,n.$)(".action-container")))}_getDefaultActionKeybindingLabel(e){var t;let i;if(null===(t=this._options)||void 0===t?void 0:t.renderKeybindingWithDefaultActionLabel){const t=this._keybindingService.lookupKeybinding(e.id);t&&(i=`(${t.getLabel()})`)}return i}setActionContext(e){super.setActionContext(e),this._defaultAction.setActionContext(e),this._dropdown.setActionContext(e)}render(e){this._container=e,super.render(this._container),this._container.classList.add("monaco-dropdown-with-default");const t=(0,n.$)(".action-container");this._defaultAction.render((0,n.R3)(this._container,t)),this._register((0,n.nm)(t,n.tw.KEY_DOWN,(e=>{const t=new s.y(e);t.equals(17)&&(this._defaultAction.element.tabIndex=-1,this._dropdown.focus(),t.stopPropagation())})));const i=(0,n.$)(".dropdown-action-container");this._dropdown.render((0,n.R3)(this._container,i)),this._register((0,n.nm)(i,n.tw.KEY_DOWN,(e=>{var t;const i=new s.y(e);i.equals(15)&&(this._defaultAction.element.tabIndex=0,this._dropdown.setFocusable(!1),null===(t=this._defaultAction.element)||void 0===t||t.focus(),i.stopPropagation())})))}focus(e){e?this._dropdown.focus():(this._defaultAction.element.tabIndex=0,this._defaultAction.element.focus())}blur(){this._defaultAction.element.tabIndex=-1,this._dropdown.blur(),this._container.blur()}setFocusable(e){e?this._defaultAction.element.tabIndex=0:(this._defaultAction.element.tabIndex=-1,this._dropdown.setFocusable(!1))}dispose(){this._defaultAction.dispose(),this._dropdown.dispose(),super.dispose()}};P=M([I(2,m.d),I(3,C.lT),I(4,f.i),I(5,h.co),I(6,y.TG),I(7,v.Uy)],P);let K=class extends o.Lc{constructor(e,t){super(null,e,e.actions.map((e=>({text:e.id===a.Z0.ID?"─────────":e.label,isDisabled:!e.enabled}))),0,t,S.BM,{ariaLabel:e.tooltip,optionsAsChildren:!0}),this.select(Math.max(0,e.actions.findIndex((e=>e.checked))))}render(e){super.render(e),e.style.borderColor=(0,k.n_1)(k.a9O)}runAction(e,t){const i=this.action.actions[t];i&&this.actionRunner.run(i)}};function V(e,t,i){return t instanceof h.U8?e.createInstance(O,t,i):t instanceof h.NZ?t.item.isSelection?e.createInstance(K,t):t.item.rememberDefaultAction?e.createInstance(P,t,Object.assign(Object.assign({},i),{persistLastActionId:!0})):e.createInstance(R,t,i):void 0}K=M([I(1,f.u)],K)},40251:(e,t,i)=>{i.d(t,{T:()=>m});var n=i(2548),s=i(75467),o=i(22513),r=i(10205),a=i(21921),c=i(70959),u=i(25206),l=i(82693),d=i(37174),h=i(93753),p=i(15285),g=i(38857),f=function(e,t,i,n){var s,o=arguments.length,r=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(s=e[a])&&(r=(o<3?s(r):o>3?s(t,i,r):s(t,i))||r);return o>3&&r&&Object.defineProperty(t,i,r),r},y=function(e,t){return function(i,n){t(i,n,e)}};let m=class extends o.u{constructor(e,t,i,n,s,o,r){super(e,s,Object.assign(Object.assign({getKeyBinding:e=>{var t;return null!==(t=o.lookupKeybinding(e.id))&&void 0!==t?t:void 0}},t),{allowContextMenu:!0,skipTelemetry:"string"===typeof(null===t||void 0===t?void 0:t.telemetrySource)})),this._options=t,this._menuService=i,this._contextKeyService=n,this._contextMenuService=s,this._sessionDisposables=this._store.add(new c.SL);const a=null===t||void 0===t?void 0:t.telemetrySource;a&&this._store.add(this.actionBar.onDidRun((e=>r.publicLog2("workbenchActionExecuted",{id:e.action.id,from:a}))))}setActions(e,t=[],i){var o,c,d;this._sessionDisposables.clear();const h=e.slice(),p=t.slice(),g=[];let f=0;const y=[];let m=!1;if(-1!==(null===(o=this._options)||void 0===o?void 0:o.hiddenItemStrategy))for(let n=0;n=this._options.maxNumberOfItems&&(h[t]=void 0,y[t]=i))}}(0,a.Rs)(h),(0,a.Rs)(y),super.setActions(h,r.Z0.join(y,p)),g.length>0&&this._sessionDisposables.add((0,n.nm)(this.getElement(),"contextmenu",(e=>{var t,n,o,a,c;const d=new s.n(e),h=this.getItemAction(d.target);if(!h)return;d.preventDefault(),d.stopPropagation();let p,y=!1;if(1===f&&0===(null===(t=this._options)||void 0===t?void 0:t.hiddenItemStrategy)){y=!0;for(let e=0;ethis._menuService.resetHiddenStates(i)}))),this._contextMenuService.showContextMenu({getAnchor:()=>d,getActions:()=>C,menuId:null===(o=this._options)||void 0===o?void 0:o.contextMenu,menuActionOptions:Object.assign({renderShortTitle:!0},null===(a=this._options)||void 0===a?void 0:a.menuOptions),skipTelemetry:"string"===typeof(null===(c=this._options)||void 0===c?void 0:c.telemetrySource),contextKeyService:this._contextKeyService})})))}};m=f([y(2,l.co),y(3,d.i6),y(4,h.i),y(5,p.d),y(6,g.b)],m)},82693:(e,t,i)=>{i.d(t,{BH:()=>_,Ke:()=>x,NZ:()=>b,U8:()=>w,co:()=>C,eH:()=>m,f6:()=>y,r1:()=>k,vr:()=>f});var n=i(10205),s=i(99588),o=i(11271),r=i(70959),a=i(33010),c=i(46871),u=i(37174),l=i(21881),d=i(37395),h=function(e,t,i,n){var s,o=arguments.length,r=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(s=e[a])&&(r=(o<3?s(r):o>3?s(t,i,r):s(t,i))||r);return o>3&&r&&Object.defineProperty(t,i,r),r},p=function(e,t){return function(i,n){t(i,n,e)}},g=function(e,t){var i={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(i[n]=e[n]);if(null!=e&&"function"===typeof Object.getOwnPropertySymbols){var s=0;for(n=Object.getOwnPropertySymbols(e);st===e}}v._all=new Map;const _=new class{constructor(){this._commands=new Map,this._menuItems=new Map,this._onDidChangeMenu=new o.SZ({merge:v.merge}),this.onDidChangeMenu=this._onDidChangeMenu.event}addCommand(e){return this._commands.set(e.id,e),this._onDidChangeMenu.fire(v.for(m.CommandPalette)),(0,r.OF)((()=>{this._commands.delete(e.id)&&this._onDidChangeMenu.fire(v.for(m.CommandPalette))}))}getCommand(e){return this._commands.get(e)}getCommands(){const e=new Map;return this._commands.forEach(((t,i)=>e.set(i,t))),e}appendMenuItem(e,t){let i=this._menuItems.get(e);i||(i=new a.S,this._menuItems.set(e,i));const n=i.push(t);return this._onDidChangeMenu.fire(v.for(e)),(0,r.OF)(n)}appendMenuItems(e){const t=new r.SL;for(const{id:i,item:n}of e)t.add(this.appendMenuItem(i,n));return t}getMenuItems(e){let t;return t=this._menuItems.has(e)?[...this._menuItems.get(e)]:[],e===m.CommandPalette&&this._appendImplicitItems(t),t}_appendImplicitItems(e){const t=new Set;for(const i of e)f(i)&&(t.add(i.command.id),i.alt&&t.add(i.alt.id));this._commands.forEach(((i,n)=>{t.has(n)||e.push({command:i})}))}};class b extends n.wY{constructor(e,t,i){super(`submenuitem.${e.submenu.id}`,"string"===typeof e.title?e.title:e.title.value,i,"submenu"),this.item=e,this.hideActions=t}}let w=class e{static label(e,t){return(null===t||void 0===t?void 0:t.renderShortTitle)&&e.shortTitle?"string"===typeof e.shortTitle?e.shortTitle:e.shortTitle.value:"string"===typeof e.title?e.title:e.title.value}constructor(t,i,n,o,r,a){var c,u;let l;if(this.hideActions=o,this._commandService=a,this.id=t.id,this.label=e.label(t,n),this.tooltip=null!==(u="string"===typeof t.tooltip?t.tooltip:null===(c=t.tooltip)||void 0===c?void 0:c.value)&&void 0!==u?u:"",this.enabled=!t.precondition||r.contextMatchesRules(t.precondition),this.checked=void 0,t.toggled){const e=t.toggled.condition?t.toggled:{condition:t.toggled};this.checked=r.contextMatchesRules(e.condition),this.checked&&e.tooltip&&(this.tooltip="string"===typeof e.tooltip?e.tooltip:e.tooltip.value),this.checked&&s.k.isThemeIcon(e.icon)&&(l=e.icon),this.checked&&e.title&&(this.label="string"===typeof e.title?e.title:e.title.value)}l||(l=s.k.isThemeIcon(t.icon)?t.icon:void 0),this.item=t,this.alt=i?new e(i,void 0,n,o,r,a):void 0,this._options=n,this.class=l&&s.k.asClassName(l)}run(...e){var t,i;let n=[];return(null===(t=this._options)||void 0===t?void 0:t.arg)&&(n=[...n,this._options.arg]),(null===(i=this._options)||void 0===i?void 0:i.shouldForwardArgs)&&(n=[...n,...e]),this._commandService.executeCommand(this.id,...n)}};w=h([p(4,u.i6),p(5,c.H)],w);class x{constructor(e){this.desc=e}}function k(e){const t=new r.SL,i=new e,n=i.desc,{f1:s,menu:o,keybinding:a,description:l}=n,h=g(n,["f1","menu","keybinding","description"]);if(t.add(c.P.registerCommand({id:h.id,handler:(e,...t)=>i.run(e,...t),description:l})),Array.isArray(o))for(const r of o)t.add(_.appendMenuItem(r.id,Object.assign({command:Object.assign(Object.assign({},h),{precondition:null===r.precondition?void 0:h.precondition})},r)));else o&&t.add(_.appendMenuItem(o.id,Object.assign({command:Object.assign(Object.assign({},h),{precondition:null===o.precondition?void 0:h.precondition})},o)));if(s&&(t.add(_.appendMenuItem(m.CommandPalette,{command:h,when:h.precondition})),t.add(_.addCommand(h))),Array.isArray(a))for(const r of a)t.add(d.W.registerKeybindingRule(Object.assign(Object.assign({},r),{id:h.id,when:h.precondition?u.Ao.and(h.precondition,r.when):r.when})));else a&&t.add(d.W.registerKeybindingRule(Object.assign(Object.assign({},a),{id:h.id,when:h.precondition?u.Ao.and(h.precondition,a.when):a.when})));return t}},330:(e,t,i)=>{i.d(t,{h:()=>f});var n=i(85398),s=i(11271),o=i(70959),r=i(82693),a=i(46871),c=i(37174),u=i(10205),l=i(51906),d=i(21921),h=i(25206),p=function(e,t,i,n){var s,o=arguments.length,r=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(s=e[a])&&(r=(o<3?s(r):o>3?s(t,i,r):s(t,i))||r);return o>3&&r&&Object.defineProperty(t,i,r),r},g=function(e,t){return function(i,n){t(i,n,e)}};let f=class{constructor(e,t){this._commandService=e,this._hiddenStates=new y(t)}createMenu(e,t,i){return new C(e,this._hiddenStates,Object.assign({emitEventsForSubmenuChanges:!1,eventDebounceDelay:50},i),this._commandService,t)}resetHiddenStates(e){this._hiddenStates.reset(e)}};f=p([g(0,a.H),g(1,l.Uy)],f);let y=class e{constructor(t){this._storageService=t,this._disposables=new o.SL,this._onDidChange=new s.Q5,this.onDidChange=this._onDidChange.event,this._ignoreChangeEvent=!1,this._hiddenByDefaultCache=new Map;try{const i=t.get(e._key,0,"{}");this._data=JSON.parse(i)}catch(i){this._data=Object.create(null)}this._disposables.add(t.onDidChangeValue((n=>{if(n.key===e._key){if(!this._ignoreChangeEvent)try{const i=t.get(e._key,0,"{}");this._data=JSON.parse(i)}catch(i){console.log("FAILED to read storage after UPDATE",i)}this._onDidChange.fire()}})))}dispose(){this._onDidChange.dispose(),this._disposables.dispose()}_isHiddenByDefault(e,t){var i;return null!==(i=this._hiddenByDefaultCache.get(`${e.id}/${t}`))&&void 0!==i&&i}setDefaultState(e,t,i){this._hiddenByDefaultCache.set(`${e.id}/${t}`,i)}isHidden(e,t){var i,n;const s=this._isHiddenByDefault(e,t),o=null!==(n=null===(i=this._data[e.id])||void 0===i?void 0:i.includes(t))&&void 0!==n&&n;return s?!o:o}updateHidden(e,t,i){const n=this._isHiddenByDefault(e,t);n&&(i=!i);const s=this._data[e.id];if(i)if(s){const e=s.indexOf(t);e<0&&s.push(t)}else this._data[e.id]=[t];else if(s){const i=s.indexOf(t);i>=0&&(0,d.LS)(s,i),0===s.length&&delete this._data[e.id]}this._persist()}reset(e){if(void 0===e)this._data=Object.create(null),this._persist();else{for(const{id:t}of e)this._data[t]&&delete this._data[t];this._persist()}}_persist(){try{this._ignoreChangeEvent=!0;const t=JSON.stringify(this._data);this._storageService.store(e._key,t,0,0)}finally{this._ignoreChangeEvent=!1}}};y._key="menu.hiddenCommands",y=p([g(0,l.Uy)],y);let m=class e{constructor(e,t,i,n,s){this._id=e,this._hiddenStates=t,this._collectContextKeysForSubmenus=i,this._commandService=n,this._contextKeyService=s,this._menuGroups=[],this._structureContextKeys=new Set,this._preconditionContextKeys=new Set,this._toggledContextKeys=new Set,this.refresh()}get structureContextKeys(){return this._structureContextKeys}get preconditionContextKeys(){return this._preconditionContextKeys}get toggledContextKeys(){return this._toggledContextKeys}refresh(){this._menuGroups.length=0,this._structureContextKeys.clear(),this._preconditionContextKeys.clear(),this._toggledContextKeys.clear();const t=r.BH.getMenuItems(this._id);let i;t.sort(e._compareMenuItems);for(const e of t){const t=e.group||"";i&&i[0]===t||(i=[t,[]],this._menuGroups.push(i)),i[1].push(e),this._collectContextKeys(e)}}_collectContextKeys(t){if(e._fillInKbExprKeys(t.when,this._structureContextKeys),(0,r.vr)(t)){if(t.command.precondition&&e._fillInKbExprKeys(t.command.precondition,this._preconditionContextKeys),t.command.toggled){const i=t.command.toggled.condition||t.command.toggled;e._fillInKbExprKeys(i,this._toggledContextKeys)}}else this._collectContextKeysForSubmenus&&r.BH.getMenuItems(t.submenu).forEach(this._collectContextKeys,this)}createActionGroups(t){const i=[];for(const n of this._menuGroups){const[s,o]=n,a=[];for(const i of o)if(this._contextKeyService.contextMatchesRules(i.when)){const n=(0,r.vr)(i);n&&this._hiddenStates.setDefaultState(this._id,i.command.id,!!i.isHiddenByDefault);const s=v(this._id,n?i.command:i,this._hiddenStates);if(n)a.push(new r.U8(i.command,i.alt,t,s,this._contextKeyService,this._commandService));else{const n=new e(i.submenu,this._hiddenStates,this._collectContextKeysForSubmenus,this._commandService,this._contextKeyService).createActionGroups(t),o=u.Z0.join(...n.map((e=>e[1])));o.length>0&&a.push(new r.NZ(i,s,o))}}a.length>0&&i.push([s,a])}return i}static _fillInKbExprKeys(e,t){if(e)for(const i of e.keys())t.add(i)}static _compareMenuItems(t,i){const n=t.group,s=i.group;if(n!==s){if(!n)return 1;if(!s)return-1;if("navigation"===n)return-1;if("navigation"===s)return 1;const e=n.localeCompare(s);if(0!==e)return e}const o=t.order||0,a=i.order||0;return oa?1:e._compareTitles((0,r.vr)(t)?t.command.title:t.title,(0,r.vr)(i)?i.command.title:i.title)}static _compareTitles(e,t){const i="string"===typeof e?e:e.original,n="string"===typeof t?t:t.original;return i.localeCompare(n)}};m=p([g(3,a.H),g(4,c.i6)],m);let C=class{constructor(e,t,i,a,c){this._disposables=new o.SL,this._menuInfo=new m(e,t,i.emitEventsForSubmenuChanges,a,c);const u=new n.pY((()=>{this._menuInfo.refresh(),this._onDidChange.fire({menu:this,isStructuralChange:!0,isEnablementChange:!0,isToggleChange:!0})}),i.eventDebounceDelay);this._disposables.add(u),this._disposables.add(r.BH.onDidChangeMenu((t=>{t.has(e)&&u.schedule()})));const l=this._disposables.add(new o.SL),d=e=>{let t=!1,i=!1,n=!1;for(const s of e)if(t=t||s.isStructuralChange,i=i||s.isEnablementChange,n=n||s.isToggleChange,t&&i&&n)break;return{menu:this,isStructuralChange:t,isEnablementChange:i,isToggleChange:n}},h=()=>{l.add(c.onDidChangeContext((e=>{const t=e.affectsSome(this._menuInfo.structureContextKeys),i=e.affectsSome(this._menuInfo.preconditionContextKeys),n=e.affectsSome(this._menuInfo.toggledContextKeys);(t||i||n)&&this._onDidChange.fire({menu:this,isStructuralChange:t,isEnablementChange:i,isToggleChange:n})}))),l.add(t.onDidChange((e=>{this._onDidChange.fire({menu:this,isStructuralChange:!0,isEnablementChange:!1,isToggleChange:!1})})))};this._onDidChange=new s.D0({onWillAddFirstListener:h,onDidRemoveLastListener:l.clear.bind(l),delay:i.eventDebounceDelay,merge:d}),this.onDidChange=this._onDidChange.event}getActions(e){return this._menuInfo.createActionGroups(e)}dispose(){this._disposables.dispose(),this._onDidChange.dispose()}};function v(e,t,i){const n=(0,r.f6)(t)?t.submenu.id:t.id,s="string"===typeof t.title?t.title:t.title.value,o=(0,u.xw)({id:`hide/${e.id}/${n}`,label:(0,h.NC)("hide.label","Hide '{0}'",s),run(){i.updateHidden(e,n,!0)}}),a=(0,u.xw)({id:`toggle/${e.id}/${n}`,label:s,get checked(){return!i.isHidden(e,n)},run(){i.updateHidden(e,n,!!this.checked)}});return{hide:o,toggle:a,get isHidden(){return!a.checked}}}C=p([g(3,a.H),g(4,c.i6)],C)},70936:(e,t,i)=>{i.d(t,{e7:()=>o,y$:()=>c});var n=i(21881),s=i(25206);const o=(0,n.yh)("audioCue");class r{static register(e){const t=new r(e.fileName);return t}constructor(e){this.fileName=e}}r.error=r.register({fileName:"error.mp3"}),r.warning=r.register({fileName:"warning.mp3"}),r.foldedArea=r.register({fileName:"foldedAreas.mp3"}),r.break=r.register({fileName:"break.mp3"}),r.quickFixes=r.register({fileName:"quickFixes.mp3"}),r.taskCompleted=r.register({fileName:"taskCompleted.mp3"}),r.taskFailed=r.register({fileName:"taskFailed.mp3"}),r.terminalBell=r.register({fileName:"terminalBell.mp3"}),r.diffLineInserted=r.register({fileName:"diffLineInserted.mp3"}),r.diffLineDeleted=r.register({fileName:"diffLineDeleted.mp3"}),r.diffLineModified=r.register({fileName:"diffLineModified.mp3"}),r.chatRequestSent=r.register({fileName:"chatRequestSent.mp3"}),r.chatResponsePending=r.register({fileName:"chatResponsePending.mp3"}),r.chatResponseReceived1=r.register({fileName:"chatResponseReceived1.mp3"}),r.chatResponseReceived2=r.register({fileName:"chatResponseReceived2.mp3"}),r.chatResponseReceived3=r.register({fileName:"chatResponseReceived3.mp3"}),r.chatResponseReceived4=r.register({fileName:"chatResponseReceived4.mp3"});class a{constructor(e){this.randomOneOf=e}}class c{static register(e){const t=new a("randomOneOf"in e.sound?e.sound.randomOneOf:[e.sound]),i=new c(t,e.name,e.settingsKey);return c._audioCues.add(i),i}constructor(e,t,i){this.sound=e,this.name=t,this.settingsKey=i}}c._audioCues=new Set,c.error=c.register({name:(0,s.NC)("audioCues.lineHasError.name","Error on Line"),sound:r.error,settingsKey:"audioCues.lineHasError"}),c.warning=c.register({name:(0,s.NC)("audioCues.lineHasWarning.name","Warning on Line"),sound:r.warning,settingsKey:"audioCues.lineHasWarning"}),c.foldedArea=c.register({name:(0,s.NC)("audioCues.lineHasFoldedArea.name","Folded Area on Line"),sound:r.foldedArea,settingsKey:"audioCues.lineHasFoldedArea"}),c.break=c.register({name:(0,s.NC)("audioCues.lineHasBreakpoint.name","Breakpoint on Line"),sound:r.break,settingsKey:"audioCues.lineHasBreakpoint"}),c.inlineSuggestion=c.register({name:(0,s.NC)("audioCues.lineHasInlineSuggestion.name","Inline Suggestion on Line"),sound:r.quickFixes,settingsKey:"audioCues.lineHasInlineSuggestion"}),c.terminalQuickFix=c.register({name:(0,s.NC)("audioCues.terminalQuickFix.name","Terminal Quick Fix"),sound:r.quickFixes,settingsKey:"audioCues.terminalQuickFix"}),c.onDebugBreak=c.register({name:(0,s.NC)("audioCues.onDebugBreak.name","Debugger Stopped on Breakpoint"),sound:r.break,settingsKey:"audioCues.onDebugBreak"}),c.noInlayHints=c.register({name:(0,s.NC)("audioCues.noInlayHints","No Inlay Hints on Line"),sound:r.error,settingsKey:"audioCues.noInlayHints"}),c.taskCompleted=c.register({name:(0,s.NC)("audioCues.taskCompleted","Task Completed"),sound:r.taskCompleted,settingsKey:"audioCues.taskCompleted"}),c.taskFailed=c.register({name:(0,s.NC)("audioCues.taskFailed","Task Failed"),sound:r.taskFailed,settingsKey:"audioCues.taskFailed"}),c.terminalCommandFailed=c.register({name:(0,s.NC)("audioCues.terminalCommandFailed","Terminal Command Failed"),sound:r.error,settingsKey:"audioCues.terminalCommandFailed"}),c.terminalBell=c.register({name:(0,s.NC)("audioCues.terminalBell","Terminal Bell"),sound:r.terminalBell,settingsKey:"audioCues.terminalBell"}),c.notebookCellCompleted=c.register({name:(0,s.NC)("audioCues.notebookCellCompleted","Notebook Cell Completed"),sound:r.taskCompleted,settingsKey:"audioCues.notebookCellCompleted"}),c.notebookCellFailed=c.register({name:(0,s.NC)("audioCues.notebookCellFailed","Notebook Cell Failed"),sound:r.taskFailed,settingsKey:"audioCues.notebookCellFailed"}),c.diffLineInserted=c.register({name:(0,s.NC)("audioCues.diffLineInserted","Diff Line Inserted"),sound:r.diffLineInserted,settingsKey:"audioCues.diffLineInserted"}),c.diffLineDeleted=c.register({name:(0,s.NC)("audioCues.diffLineDeleted","Diff Line Deleted"),sound:r.diffLineDeleted,settingsKey:"audioCues.diffLineDeleted"}),c.diffLineModified=c.register({name:(0,s.NC)("audioCues.diffLineModified","Diff Line Modified"),sound:r.diffLineModified,settingsKey:"audioCues.diffLineModified"}),c.chatRequestSent=c.register({name:(0,s.NC)("audioCues.chatRequestSent","Chat Request Sent"),sound:r.chatRequestSent,settingsKey:"audioCues.chatRequestSent"}),c.chatResponseReceived=c.register({name:(0,s.NC)("audioCues.chatResponseReceived","Chat Response Received"),settingsKey:"audioCues.chatResponseReceived",sound:{randomOneOf:[r.chatResponseReceived1,r.chatResponseReceived2,r.chatResponseReceived3,r.chatResponseReceived4]}}),c.chatResponsePending=c.register({name:(0,s.NC)("audioCues.chatResponsePending","Chat Response Pending"),sound:r.chatResponsePending,settingsKey:"audioCues.chatResponsePending"})},8930:(e,t,i)=>{i.d(t,{r:()=>h});var n=i(90882),s=i(2548),o=i(85398),r=i(70959),a=i(38079),c=i(23034),u=function(e,t,i,n){var s,o=arguments.length,r=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(s=e[a])&&(r=(o<3?s(r):o>3?s(t,i,r):s(t,i))||r);return o>3&&r&&Object.defineProperty(t,i,r),r},l=function(e,t){return function(i,n){t(i,n,e)}},d=function(e,t,i,n){function s(e){return e instanceof i?e:new i((function(t){t(e)}))}return new(i||(i=Promise))((function(i,o){function r(e){try{c(n.next(e))}catch(t){o(t)}}function a(e){try{c(n["throw"](e))}catch(t){o(t)}}function c(e){e.done?i(e.value):s(e.value).then(r,a)}c((n=n.apply(e,t||[])).next())}))};let h=class extends r.JT{constructor(e,t){super(),this.layoutService=e,this.logService=t,this.mapTextToType=new Map,this.findText="",this.resources=[],(n.G6||n.MG)&&this.installWebKitWriteTextWorkaround()}installWebKitWriteTextWorkaround(){const e=()=>{const e=new o.CR;this.webKitPendingClipboardWritePromise&&!this.webKitPendingClipboardWritePromise.isSettled&&this.webKitPendingClipboardWritePromise.cancel(),this.webKitPendingClipboardWritePromise=e,navigator.clipboard.write([new ClipboardItem({"text/plain":e.p})]).catch((t=>d(this,void 0,void 0,(function*(){t instanceof Error&&"NotAllowedError"===t.name&&e.isRejected||this.logService.error(t)}))))};this.layoutService.hasContainer&&(this._register((0,s.nm)(this.layoutService.container,"click",e)),this._register((0,s.nm)(this.layoutService.container,"keydown",e)))}writeText(e,t){return d(this,void 0,void 0,(function*(){if(t)return void this.mapTextToType.set(t,e);if(this.webKitPendingClipboardWritePromise)return this.webKitPendingClipboardWritePromise.complete(e);try{return yield navigator.clipboard.writeText(e)}catch(o){console.error(o)}const i=document.activeElement,n=document.body.appendChild((0,s.$)("textarea",{"aria-hidden":!0}));n.style.height="1px",n.style.width="1px",n.style.position="absolute",n.value=e,n.focus(),n.select(),document.execCommand("copy"),i instanceof HTMLElement&&i.focus(),document.body.removeChild(n)}))}readText(e){return d(this,void 0,void 0,(function*(){if(e)return this.mapTextToType.get(e)||"";try{return yield navigator.clipboard.readText()}catch(t){return console.error(t),""}}))}readFindText(){return d(this,void 0,void 0,(function*(){return this.findText}))}writeFindText(e){return d(this,void 0,void 0,(function*(){this.findText=e}))}writeResources(e){return d(this,void 0,void 0,(function*(){this.resources=e}))}readResources(){return d(this,void 0,void 0,(function*(){return this.resources}))}};h=u([l(0,a.F),l(1,c.VZ)],h)},2827:(e,t,i)=>{i.d(t,{p:()=>s});var n=i(21881);const s=(0,n.yh)("clipboardService")},46871:(e,t,i)=>{i.d(t,{H:()=>u,P:()=>l});var n=i(11271),s=i(39595),o=i(70959),r=i(33010),a=i(55455),c=i(21881);const u=(0,c.yh)("commandService"),l=new class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new n.Q5,this.onDidRegisterCommand=this._onDidRegisterCommand.event}registerCommand(e,t){if(!e)throw new Error("invalid command");if("string"===typeof e){if(!t)throw new Error("invalid command");return this.registerCommand({id:e,handler:t})}if(e.description){const t=[];for(const n of e.description.args)t.push(n.constraint);const i=e.handler;e.handler=function(e,...n){return(0,a.D8)(n,t),i(e,...n)}}const{id:i}=e;let n=this._commands.get(i);n||(n=new r.S,this._commands.set(i,n));const s=n.unshift(e),c=(0,o.OF)((()=>{s();const e=this._commands.get(i);(null===e||void 0===e?void 0:e.isEmpty())&&this._commands.delete(i)}));return this._onDidRegisterCommand.fire(i),c}registerCommandAlias(e,t){return l.registerCommand(e,((e,...i)=>e.get(u).executeCommand(t,...i)))}getCommand(e){const t=this._commands.get(e);if(t&&!t.isEmpty())return s.$.first(t)}getCommands(){const e=new Map;for(const t of this._commands.keys()){const i=this.getCommand(t);i&&e.set(t,i)}return e}};l.registerCommand("noop",(()=>{}))},47596:(e,t,i)=>{i.d(t,{KV:()=>r,Mt:()=>u,Od:()=>o,UI:()=>l,Ui:()=>s,xL:()=>a});var n=i(21881);const s=(0,n.yh)("configurationService");function o(e,t){const i=Object.create(null);for(const n in e)r(i,n,e[n],t);return i}function r(e,t,i,n){const s=t.split("."),o=s.pop();let r=e;for(let c=0;c{i.d(t,{VK:()=>f,VV:()=>h,YX:()=>y});var n=i(21921),s=i(71400),o=i(2179),r=i(55455),a=i(95896),c=i(47596),u=i(46853),l=i(39672);function d(e){return Object.isFrozen(e)?e:o._A(e)}class h{constructor(e={},t=[],i=[],n){this._contents=e,this._keys=t,this._overrides=i,this.raw=n,this.overrideConfigurations=new Map}get rawConfiguration(){var e;if(!this._rawConfiguration)if(null===(e=this.raw)||void 0===e?void 0:e.length){const e=this.raw.map((e=>{if(e instanceof h)return e;const t=new p("");return t.parseRaw(e),t.configurationModel}));this._rawConfiguration=e.reduce(((e,t)=>t===e?t:e.merge(t)),e[0])}else this._rawConfiguration=this;return this._rawConfiguration}get contents(){return this._contents}get overrides(){return this._overrides}get keys(){return this._keys}isEmpty(){return 0===this._keys.length&&0===Object.keys(this._contents).length&&0===this._overrides.length}getValue(e){return e?(0,c.Mt)(this.contents,e):this.contents}inspect(e,t){const i=this.rawConfiguration.getValue(e),n=t?this.rawConfiguration.getOverrideValue(e,t):void 0,s=t?this.rawConfiguration.override(t).getValue(e):i;return{value:i,override:n,merged:s}}getOverrideValue(e,t){const i=this.getContentsForOverrideIdentifer(t);return i?e?(0,c.Mt)(i,e):i:void 0}override(e){let t=this.overrideConfigurations.get(e);return t||(t=this.createOverrideConfigurationModel(e),this.overrideConfigurations.set(e,t)),t}merge(...e){var t,i;const s=o.I8(this.contents),r=o.I8(this.overrides),a=[...this.keys],c=(null===(t=this.raw)||void 0===t?void 0:t.length)?[...this.raw]:[this];for(const u of e)if(c.push(...(null===(i=u.raw)||void 0===i?void 0:i.length)?u.raw:[u]),!u.isEmpty()){this.mergeContents(s,u.contents);for(const e of u.overrides){const[t]=r.filter((t=>n.fS(t.identifiers,e.identifiers)));t?(this.mergeContents(t.contents,e.contents),t.keys.push(...e.keys),t.keys=n.EB(t.keys)):r.push(o.I8(e))}for(const e of u.keys)-1===a.indexOf(e)&&a.push(e)}return new h(s,a,r,c.every((e=>e instanceof h))?void 0:c)}createOverrideConfigurationModel(e){const t=this.getContentsForOverrideIdentifer(e);if(!t||"object"!==typeof t||!Object.keys(t).length)return this;const i={};for(const s of n.EB([...Object.keys(this.contents),...Object.keys(t)])){let e=this.contents[s];const n=t[s];n&&("object"===typeof e&&"object"===typeof n?(e=o.I8(e),this.mergeContents(e,n)):e=n),i[s]=e}return new h(i,this.keys,this.overrides)}mergeContents(e,t){for(const i of Object.keys(t))i in e&&r.Kn(e[i])&&r.Kn(t[i])?this.mergeContents(e[i],t[i]):e[i]=o.I8(t[i])}getContentsForOverrideIdentifer(e){let t=null,i=null;const n=e=>{e&&(i?this.mergeContents(i,e):i=o.I8(e))};for(const s of this.overrides)1===s.identifiers.length&&s.identifiers[0]===e?t=s.contents:s.identifiers.includes(e)&&n(s.contents);return n(t),i}toJSON(){return{contents:this.contents,overrides:this.overrides,keys:this.keys}}addValue(e,t){this.updateValue(e,t,!0)}setValue(e,t){this.updateValue(e,t,!1)}removeValue(e){const t=this.keys.indexOf(e);-1!==t&&(this.keys.splice(t,1),(0,c.xL)(this.contents,e),u.eU.test(e)&&this.overrides.splice(this.overrides.findIndex((t=>n.fS(t.identifiers,(0,u.ny)(e)))),1))}updateValue(e,t,i){(0,c.KV)(this.contents,e,t,(e=>console.error(e))),i=i||-1===this.keys.indexOf(e),i&&this.keys.push(e),u.eU.test(e)&&this.overrides.push({identifiers:(0,u.ny)(e),keys:Object.keys(this.contents[e]),contents:(0,c.Od)(this.contents[e],(e=>console.error(e)))})}}class p{constructor(e){this._name=e,this._raw=null,this._configurationModel=null,this._restrictedConfigurations=[]}get configurationModel(){return this._configurationModel||new h}parseRaw(e,t){this._raw=e;const{contents:i,keys:n,overrides:s,restricted:o,hasExcludedProperties:r}=this.doParseRaw(e,t);this._configurationModel=new h(i,n,s,r?[e]:void 0),this._restrictedConfigurations=o||[]}doParseRaw(e,t){const i=l.B.as(u.IP.Configuration).getConfigurationProperties(),n=this.filter(e,i,!0,t);e=n.raw;const s=(0,c.Od)(e,(e=>console.error(`Conflict in settings file ${this._name}: ${e}`))),o=Object.keys(e),r=this.toOverrides(e,(e=>console.error(`Conflict in settings file ${this._name}: ${e}`)));return{contents:s,keys:o,overrides:r,restricted:n.restricted,hasExcludedProperties:n.hasExcludedProperties}}filter(e,t,i,n){var s,o,r;let a=!1;if(!(null===n||void 0===n?void 0:n.scopes)&&!(null===n||void 0===n?void 0:n.skipRestricted)&&!(null===(s=null===n||void 0===n?void 0:n.exclude)||void 0===s?void 0:s.length))return{raw:e,restricted:[],hasExcludedProperties:a};const c={},l=[];for(const d in e)if(u.eU.test(d)&&i){const i=this.filter(e[d],t,!1,n);c[d]=i.raw,a=a||i.hasExcludedProperties,l.push(...i.restricted)}else{const i=t[d],s=i?"undefined"!==typeof i.scope?i.scope:3:void 0;(null===i||void 0===i?void 0:i.restricted)&&l.push(d),(null===(o=n.exclude)||void 0===o?void 0:o.includes(d))||!(null===(r=n.include)||void 0===r?void 0:r.includes(d))&&(void 0!==s&&void 0!==n.scopes&&!n.scopes.includes(s)||n.skipRestricted&&(null===i||void 0===i?void 0:i.restricted))?a=!0:c[d]=e[d]}return{raw:c,restricted:l,hasExcludedProperties:a}}toOverrides(e,t){const i=[];for(const n of Object.keys(e))if(u.eU.test(n)){const s={};for(const t in e[n])s[t]=e[n][t];i.push({identifiers:(0,u.ny)(n),keys:Object.keys(s),contents:(0,c.Od)(s,t)})}return i}}class g{constructor(e,t,i,n,s,o,r,a,c,u,l,d,h){this.key=e,this.overrides=t,this._value=i,this.overrideIdentifiers=n,this.defaultConfiguration=s,this.policyConfiguration=o,this.applicationConfiguration=r,this.userConfiguration=a,this.localUserConfiguration=c,this.remoteUserConfiguration=u,this.workspaceConfiguration=l,this.folderConfigurationModel=d,this.memoryConfigurationModel=h}inspect(e,t,i){const n=e.inspect(t,i);return{get value(){return d(n.value)},get override(){return d(n.override)},get merged(){return d(n.merged)}}}get userInspectValue(){return this._userInspectValue||(this._userInspectValue=this.inspect(this.userConfiguration,this.key,this.overrides.overrideIdentifier)),this._userInspectValue}get user(){return void 0!==this.userInspectValue.value||void 0!==this.userInspectValue.override?{value:this.userInspectValue.value,override:this.userInspectValue.override}:void 0}}class f{constructor(e,t,i,n,o=new h,r=new h,a=new s.Y9,c=new h,u=new s.Y9){this._defaultConfiguration=e,this._policyConfiguration=t,this._applicationConfiguration=i,this._localUserConfiguration=n,this._remoteUserConfiguration=o,this._workspaceConfiguration=r,this._folderConfigurations=a,this._memoryConfiguration=c,this._memoryConfigurationByResource=u,this._workspaceConsolidatedConfiguration=null,this._foldersConsolidatedConfigurations=new s.Y9,this._userConfiguration=null}getValue(e,t,i){const n=this.getConsolidatedConfigurationModel(e,t,i);return n.getValue(e)}updateValue(e,t,i={}){let n;i.resource?(n=this._memoryConfigurationByResource.get(i.resource),n||(n=new h,this._memoryConfigurationByResource.set(i.resource,n))):n=this._memoryConfiguration,void 0===t?n.removeValue(e):n.setValue(e,t),i.resource||(this._workspaceConsolidatedConfiguration=null)}inspect(e,t,i){const n=this.getConsolidatedConfigurationModel(e,t,i),s=this.getFolderConfigurationModelForResource(t.resource,i),o=t.resource&&this._memoryConfigurationByResource.get(t.resource)||this._memoryConfiguration,r=new Set;for(const a of n.overrides)for(const t of a.identifiers)void 0!==n.getOverrideValue(e,t)&&r.add(t);return new g(e,t,n.getValue(e),r.size?[...r]:void 0,this._defaultConfiguration,this._policyConfiguration.isEmpty()?void 0:this._policyConfiguration,this.applicationConfiguration.isEmpty()?void 0:this.applicationConfiguration,this.userConfiguration,this.localUserConfiguration,this.remoteUserConfiguration,i?this._workspaceConfiguration:void 0,s||void 0,o)}get applicationConfiguration(){return this._applicationConfiguration}get userConfiguration(){return this._userConfiguration||(this._userConfiguration=this._remoteUserConfiguration.isEmpty()?this._localUserConfiguration:this._localUserConfiguration.merge(this._remoteUserConfiguration)),this._userConfiguration}get localUserConfiguration(){return this._localUserConfiguration}get remoteUserConfiguration(){return this._remoteUserConfiguration}getConsolidatedConfigurationModel(e,t,i){let n=this.getConsolidatedConfigurationModelForResource(t,i);return t.overrideIdentifier&&(n=n.override(t.overrideIdentifier)),this._policyConfiguration.isEmpty()||void 0===this._policyConfiguration.getValue(e)||(n=n.merge(this._policyConfiguration)),n}getConsolidatedConfigurationModelForResource({resource:e},t){let i=this.getWorkspaceConsolidatedConfiguration();if(t&&e){const n=t.getFolder(e);n&&(i=this.getFolderConsolidatedConfiguration(n.uri)||i);const s=this._memoryConfigurationByResource.get(e);s&&(i=i.merge(s))}return i}getWorkspaceConsolidatedConfiguration(){return this._workspaceConsolidatedConfiguration||(this._workspaceConsolidatedConfiguration=this._defaultConfiguration.merge(this.applicationConfiguration,this.userConfiguration,this._workspaceConfiguration,this._memoryConfiguration)),this._workspaceConsolidatedConfiguration}getFolderConsolidatedConfiguration(e){let t=this._foldersConsolidatedConfigurations.get(e);if(!t){const i=this.getWorkspaceConsolidatedConfiguration(),n=this._folderConfigurations.get(e);n?(t=i.merge(n),this._foldersConsolidatedConfigurations.set(e,t)):t=i}return t}getFolderConfigurationModelForResource(e,t){if(t&&e){const i=t.getFolder(e);if(i)return this._folderConfigurations.get(i.uri)}}toData(){return{defaults:{contents:this._defaultConfiguration.contents,overrides:this._defaultConfiguration.overrides,keys:this._defaultConfiguration.keys},policy:{contents:this._policyConfiguration.contents,overrides:this._policyConfiguration.overrides,keys:this._policyConfiguration.keys},application:{contents:this.applicationConfiguration.contents,overrides:this.applicationConfiguration.overrides,keys:this.applicationConfiguration.keys},user:{contents:this.userConfiguration.contents,overrides:this.userConfiguration.overrides,keys:this.userConfiguration.keys},workspace:{contents:this._workspaceConfiguration.contents,overrides:this._workspaceConfiguration.overrides,keys:this._workspaceConfiguration.keys},folders:[...this._folderConfigurations.keys()].reduce(((e,t)=>{const{contents:i,overrides:n,keys:s}=this._folderConfigurations.get(t);return e.push([t,{contents:i,overrides:n,keys:s}]),e}),[])}}static parse(e){const t=this.parseConfigurationModel(e.defaults),i=this.parseConfigurationModel(e.policy),n=this.parseConfigurationModel(e.application),o=this.parseConfigurationModel(e.user),r=this.parseConfigurationModel(e.workspace),c=e.folders.reduce(((e,t)=>(e.set(a.o.revive(t[0]),this.parseConfigurationModel(t[1])),e)),new s.Y9);return new f(t,i,n,o,new h,r,c,new h,new s.Y9)}static parseConfigurationModel(e){return new h(e.contents,e.keys,e.overrides)}}class y{constructor(e,t,i,n){this.change=e,this.previous=t,this.currentConfiguraiton=i,this.currentWorkspace=n,this._marker="\n",this._markerCode1=this._marker.charCodeAt(0),this._markerCode2=".".charCodeAt(0),this.affectedKeys=new Set,this._previousConfiguration=void 0;for(const s of e.keys)this.affectedKeys.add(s);for(const[,s]of e.overrides)for(const e of s)this.affectedKeys.add(e);this._affectsConfigStr=this._marker;for(const s of this.affectedKeys)this._affectsConfigStr+=s+this._marker}get previousConfiguration(){return!this._previousConfiguration&&this.previous&&(this._previousConfiguration=f.parse(this.previous.data)),this._previousConfiguration}affectsConfiguration(e,t){var i;const n=this._marker+e,s=this._affectsConfigStr.indexOf(n);if(s<0)return!1;const r=s+n.length;if(r>=this._affectsConfigStr.length)return!1;const a=this._affectsConfigStr.charCodeAt(r);if(a!==this._markerCode1&&a!==this._markerCode2)return!1;if(t){const n=this.previousConfiguration?this.previousConfiguration.getValue(e,t,null===(i=this.previous)||void 0===i?void 0:i.workspace):void 0,s=this.currentConfiguraiton.getValue(e,t,this.currentWorkspace);return!o.fS(n,s)}return!0}}},46853:(e,t,i)=>{i.d(t,{IP:()=>l,eU:()=>x,ny:()=>k});var n=i(21921),s=i(11271),o=i(55455),r=i(25206),a=i(47596),c=i(62478),u=i(39672);const l={Configuration:"base.contributions.configuration"},d={properties:{},patternProperties:{}},h={properties:{},patternProperties:{}},p={properties:{},patternProperties:{}},g={properties:{},patternProperties:{}},f={properties:{},patternProperties:{}},y={properties:{},patternProperties:{}},m="vscode://schemas/settings/resourceLanguage",C=u.B.as(c.I.JSONContribution);class v{constructor(){this.overrideIdentifiers=new Set,this._onDidSchemaChange=new s.Q5,this._onDidUpdateConfiguration=new s.Q5,this.configurationDefaultsOverrides=new Map,this.defaultLanguageConfigurationOverridesNode={id:"defaultOverrides",title:r.NC("defaultLanguageConfigurationOverrides.title","Default Language Configuration Overrides"),properties:{}},this.configurationContributors=[this.defaultLanguageConfigurationOverridesNode],this.resourceLanguageSettingsSchema={properties:{},patternProperties:{},additionalProperties:!0,allowTrailingCommas:!0,allowComments:!0},this.configurationProperties={},this.policyConfigurations=new Map,this.excludedConfigurationProperties={},C.registerSchema(m,this.resourceLanguageSettingsSchema),this.registerOverridePropertyPatternKey()}registerConfiguration(e,t=!0){this.registerConfigurations([e],t)}registerConfigurations(e,t=!0){const i=new Set;this.doRegisterConfigurations(e,t,i),C.registerSchema(m,this.resourceLanguageSettingsSchema),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:i})}registerDefaultConfigurations(e){const t=new Set;this.doRegisterDefaultConfigurations(e,t),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:t,defaultsOverrides:!0})}doRegisterDefaultConfigurations(e,t){var i;const n=[];for(const{overrides:s,source:c}of e)for(const e in s)if(t.add(e),x.test(e)){const t=this.configurationDefaultsOverrides.get(e),u=null!==(i=null===t||void 0===t?void 0:t.valuesSources)&&void 0!==i?i:new Map;if(c)for(const i of Object.keys(s[e]))u.set(i,c);const l=Object.assign(Object.assign({},(null===t||void 0===t?void 0:t.value)||{}),s[e]);this.configurationDefaultsOverrides.set(e,{source:c,value:l,valuesSources:u});const d=(0,a.UI)(e),h={type:"object",default:l,description:r.NC("defaultLanguageConfiguration.description","Configure settings to be overridden for the {0} language.",d),$ref:m,defaultDefaultValue:l,source:o.HD(c)?void 0:c,defaultValueSource:c};n.push(...k(e)),this.configurationProperties[e]=h,this.defaultLanguageConfigurationOverridesNode.properties[e]=h}else{this.configurationDefaultsOverrides.set(e,{value:s[e],source:c});const t=this.configurationProperties[e];t&&(this.updatePropertyDefaultValue(e,t),this.updateSchema(e,t))}this.doRegisterOverrideIdentifiers(n)}registerOverrideIdentifiers(e){this.doRegisterOverrideIdentifiers(e),this._onDidSchemaChange.fire()}doRegisterOverrideIdentifiers(e){for(const t of e)this.overrideIdentifiers.add(t);this.updateOverridePropertyPatternKey()}doRegisterConfigurations(e,t,i){e.forEach((e=>{this.validateAndRegisterProperties(e,t,e.extensionInfo,e.restrictedProperties,void 0,i),this.configurationContributors.push(e),this.registerJSONConfiguration(e)}))}validateAndRegisterProperties(e,t=!0,i,n,s=3,r){var a;s=o.Jp(e.scope)?s:e.scope;const c=e.properties;if(c)for(const l in c){const e=c[l];t&&M(l,e)?delete c[l]:(e.source=i,e.defaultDefaultValue=c[l].default,this.updatePropertyDefaultValue(l,e),x.test(l)?e.scope=void 0:(e.scope=o.Jp(e.scope)?s:e.scope,e.restricted=o.Jp(e.restricted)?!!(null===n||void 0===n?void 0:n.includes(l)):e.restricted),!c[l].hasOwnProperty("included")||c[l].included?(this.configurationProperties[l]=c[l],(null===(a=c[l].policy)||void 0===a?void 0:a.name)&&this.policyConfigurations.set(c[l].policy.name,l),!c[l].deprecationMessage&&c[l].markdownDeprecationMessage&&(c[l].deprecationMessage=c[l].markdownDeprecationMessage),r.add(l)):(this.excludedConfigurationProperties[l]=c[l],delete c[l]))}const u=e.allOf;if(u)for(const o of u)this.validateAndRegisterProperties(o,t,i,n,s,r)}getConfigurationProperties(){return this.configurationProperties}getPolicyConfigurations(){return this.policyConfigurations}registerJSONConfiguration(e){const t=e=>{const i=e.properties;if(i)for(const t in i)this.updateSchema(t,i[t]);const n=e.allOf;null===n||void 0===n||n.forEach(t)};t(e)}updateSchema(e,t){switch(d.properties[e]=t,t.scope){case 1:h.properties[e]=t;break;case 2:p.properties[e]=t;break;case 6:g.properties[e]=t;break;case 3:f.properties[e]=t;break;case 4:y.properties[e]=t;break;case 5:y.properties[e]=t,this.resourceLanguageSettingsSchema.properties[e]=t;break}}updateOverridePropertyPatternKey(){for(const e of this.overrideIdentifiers.values()){const t=`[${e}]`,i={type:"object",description:r.NC("overrideSettings.defaultDescription","Configure editor settings to be overridden for a language."),errorMessage:r.NC("overrideSettings.errorMessage","This setting does not support per-language configuration."),$ref:m};this.updatePropertyDefaultValue(t,i),d.properties[t]=i,h.properties[t]=i,p.properties[t]=i,g.properties[t]=i,f.properties[t]=i,y.properties[t]=i}}registerOverridePropertyPatternKey(){const e={type:"object",description:r.NC("overrideSettings.defaultDescription","Configure editor settings to be overridden for a language."),errorMessage:r.NC("overrideSettings.errorMessage","This setting does not support per-language configuration."),$ref:m};d.patternProperties[w]=e,h.patternProperties[w]=e,p.patternProperties[w]=e,g.patternProperties[w]=e,f.patternProperties[w]=e,y.patternProperties[w]=e,this._onDidSchemaChange.fire()}updatePropertyDefaultValue(e,t){const i=this.configurationDefaultsOverrides.get(e);let n=null===i||void 0===i?void 0:i.value,s=null===i||void 0===i?void 0:i.source;o.o8(n)&&(n=t.defaultDefaultValue,s=void 0),o.o8(n)&&(n=S(t.type)),t.default=n,t.defaultValueSource=s}}const _="\\[([^\\]]+)\\]",b=new RegExp(_,"g"),w=`^(${_})+$`,x=new RegExp(w);function k(e){const t=[];if(x.test(e)){let i=b.exec(e);while(null===i||void 0===i?void 0:i.length){const n=i[1].trim();n&&t.push(n),i=b.exec(e)}}return(0,n.EB)(t)}function S(e){const t=Array.isArray(e)?e[0]:e;switch(t){case"boolean":return!1;case"integer":case"number":return 0;case"string":return"";case"array":return[];case"object":return{};default:return null}}const T=new v;function M(e,t){var i,n,s,o;return e.trim()?x.test(e)?r.NC("config.property.languageDefault","Cannot register '{0}'. This matches property pattern '\\\\[.*\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.",e):void 0!==T.getConfigurationProperties()[e]?r.NC("config.property.duplicate","Cannot register '{0}'. This property is already registered.",e):(null===(i=t.policy)||void 0===i?void 0:i.name)&&void 0!==T.getPolicyConfigurations().get(null===(n=t.policy)||void 0===n?void 0:n.name)?r.NC("config.policy.duplicate","Cannot register '{0}'. The associated policy {1} is already registered with {2}.",e,null===(s=t.policy)||void 0===s?void 0:s.name,T.getPolicyConfigurations().get(null===(o=t.policy)||void 0===o?void 0:o.name)):null:r.NC("config.property.empty","Cannot register an empty property")}u.B.add(l.Configuration,T)},51469:(e,t,i)=>{i.d(t,{l:()=>a});var n=i(70959),s=i(93005),o=i(46853),r=i(39672);class a extends n.JT{constructor(){super(...arguments),this._configurationModel=new s.VV}get configurationModel(){return this._configurationModel}reload(){return this.resetConfigurationModel(),this.configurationModel}getConfigurationDefaultOverrides(){return{}}resetConfigurationModel(){this._configurationModel=new s.VV;const e=r.B.as(o.IP.Configuration).getConfigurationProperties();this.updateConfigurationModel(Object.keys(e),e)}updateConfigurationModel(e,t){const i=this.getConfigurationDefaultOverrides();for(const n of e){const e=i[n],s=t[n];void 0!==e?this._configurationModel.addValue(n,e):s?this._configurationModel.addValue(n,s.default):this._configurationModel.removeValue(n)}}}},47609:(e,t,i)=>{i.d(t,{aY:()=>S});var n=i(11271),s=i(39595),o=i(70959),r=i(2179),a=i(17141),c=i(95896),u=i(25206),l=i(46871),d=i(47596),h=i(37174),p=function(e,t,i,n){var s,o=arguments.length,r=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(s=e[a])&&(r=(o<3?s(r):o>3?s(t,i,r):s(t,i))||r);return o>3&&r&&Object.defineProperty(t,i,r),r},g=function(e,t){return function(i,n){t(i,n,e)}};const f="data-keybinding-context";class y{constructor(e,t){this._id=e,this._parent=t,this._value=Object.create(null),this._value["_contextId"]=e}get value(){return Object.assign({},this._value)}setValue(e,t){return this._value[e]!==t&&(this._value[e]=t,!0)}removeValue(e){return e in this._value&&(delete this._value[e],!0)}getValue(e){const t=this._value[e];return"undefined"===typeof t&&this._parent?this._parent.getValue(e):t}}class m extends y{constructor(){super(-1,null)}setValue(e,t){return!1}removeValue(e){return!1}getValue(e){}}m.INSTANCE=new m;class C extends y{constructor(e,t,i){super(e,null),this._configurationService=t,this._values=a.Id.forConfigKeys(),this._listener=this._configurationService.onDidChangeConfiguration((e=>{if(7===e.source){const e=Array.from(this._values,(([e])=>e));this._values.clear(),i.fire(new b(e))}else{const t=[];for(const i of e.affectedKeys){const e=`config.${i}`,n=this._values.findSuperstr(e);void 0!==n&&(t.push(...s.$.map(n,(([e])=>e))),this._values.deleteSuperstr(e)),this._values.has(e)&&(t.push(e),this._values.delete(e))}i.fire(new b(t))}}))}dispose(){this._listener.dispose()}getValue(e){if(0!==e.indexOf(C._keyPrefix))return super.getValue(e);if(this._values.has(e))return this._values.get(e);const t=e.substr(C._keyPrefix.length),i=this._configurationService.getValue(t);let n;switch(typeof i){case"number":case"boolean":case"string":n=i;break;default:n=Array.isArray(i)?JSON.stringify(i):i}return this._values.set(e,n),n}setValue(e,t){return super.setValue(e,t)}removeValue(e){return super.removeValue(e)}}C._keyPrefix="config.";class v{constructor(e,t,i){this._service=e,this._key=t,this._defaultValue=i,this.reset()}set(e){this._service.setContext(this._key,e)}reset(){"undefined"===typeof this._defaultValue?this._service.removeContext(this._key):this._service.setContext(this._key,this._defaultValue)}get(){return this._service.getContextKeyValue(this._key)}}class _{constructor(e){this.key=e}affectsSome(e){return e.has(this.key)}allKeysContainedIn(e){return this.affectsSome(e)}}class b{constructor(e){this.keys=e}affectsSome(e){for(const t of this.keys)if(e.has(t))return!0;return!1}allKeysContainedIn(e){return this.keys.every((t=>e.has(t)))}}class w{constructor(e){this.events=e}affectsSome(e){for(const t of this.events)if(t.affectsSome(e))return!0;return!1}allKeysContainedIn(e){return this.events.every((t=>t.allKeysContainedIn(e)))}}function x(e,t){return e.allKeysContainedIn(new Set(Object.keys(t)))}class k{constructor(e){this._onDidChangeContext=new n.K3({merge:e=>new w(e)}),this.onDidChangeContext=this._onDidChangeContext.event,this._isDisposed=!1,this._myContextId=e}createKey(e,t){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new v(this,e,t)}bufferChangeEvents(e){this._onDidChangeContext.pause();try{e()}finally{this._onDidChangeContext.resume()}}createScoped(e){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new T(this,e)}contextMatchesRules(e){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");const t=this.getContextValuesContainer(this._myContextId),i=!e||e.evaluate(t);return i}getContextKeyValue(e){if(!this._isDisposed)return this.getContextValuesContainer(this._myContextId).getValue(e)}setContext(e,t){if(this._isDisposed)return;const i=this.getContextValuesContainer(this._myContextId);i&&i.setValue(e,t)&&this._onDidChangeContext.fire(new _(e))}removeContext(e){this._isDisposed||this.getContextValuesContainer(this._myContextId).removeValue(e)&&this._onDidChangeContext.fire(new _(e))}getContext(e){return this._isDisposed?m.INSTANCE:this.getContextValuesContainer(M(e))}}let S=class extends k{constructor(e){super(0),this._contexts=new Map,this._toDispose=new o.SL,this._lastContextId=0;const t=new C(this._myContextId,e,this._onDidChangeContext);this._contexts.set(this._myContextId,t),this._toDispose.add(t)}dispose(){this._onDidChangeContext.dispose(),this._isDisposed=!0,this._toDispose.dispose()}getContextValuesContainer(e){return this._isDisposed?m.INSTANCE:this._contexts.get(e)||m.INSTANCE}createChildContext(e=this._myContextId){if(this._isDisposed)throw new Error("ContextKeyService has been disposed");const t=++this._lastContextId;return this._contexts.set(t,new y(t,this.getContextValuesContainer(e))),t}disposeContext(e){this._isDisposed||this._contexts.delete(e)}};S=p([g(0,d.Ui)],S);class T extends k{constructor(e,t){if(super(e.createChildContext()),this._parentChangeListener=new o.XK,this._parent=e,this._updateParentChangeListener(),this._domNode=t,this._domNode.hasAttribute(f)){let e="";this._domNode.classList&&(e=Array.from(this._domNode.classList.values()).join(", ")),console.error("Element already has context attribute"+(e?": "+e:""))}this._domNode.setAttribute(f,String(this._myContextId))}_updateParentChangeListener(){this._parentChangeListener.value=this._parent.onDidChangeContext((e=>{const t=this._parent.getContextValuesContainer(this._myContextId),i=t.value;x(e,i)||this._onDidChangeContext.fire(e)}))}dispose(){this._isDisposed||(this._onDidChangeContext.dispose(),this._parent.disposeContext(this._myContextId),this._parentChangeListener.dispose(),this._domNode.removeAttribute(f),this._isDisposed=!0)}getContextValuesContainer(e){return this._isDisposed?m.INSTANCE:this._parent.getContextValuesContainer(e)}createChildContext(e=this._myContextId){if(this._isDisposed)throw new Error("ScopedContextKeyService has been disposed");return this._parent.createChildContext(e)}disposeContext(e){this._isDisposed||this._parent.disposeContext(e)}}function M(e){while(e){if(e.hasAttribute(f)){const t=e.getAttribute(f);return t?parseInt(t,10):NaN}e=e.parentElement}return 0}function I(e,t,i){const n=e.get(h.i6);n.createKey(String(t),N(i))}function N(e){return(0,r.rs)(e,(e=>"object"===typeof e&&1===e.$mid?c.o.revive(e).toString():e instanceof c.o?e.toString():void 0))}l.P.registerCommand("_setContext",I),l.P.registerCommand({id:"getContextKeyInfo",handler(){return[...h.uy.all()].sort(((e,t)=>e.key.localeCompare(t.key)))},description:{description:(0,u.NC)("getContextKeyInfo","A command that returns information about context keys"),args:[]}}),l.P.registerCommand("_generateContextKeyInfo",(function(){const e=[],t=new Set;for(const i of h.uy.all())t.has(i.key)||(t.add(i.key),e.push(i));e.sort(((e,t)=>e.key.localeCompare(t.key))),console.log(JSON.stringify(e,void 0,2))}))},37174:(e,t,i)=>{i.d(t,{Ao:()=>k,i6:()=>U,uy:()=>q,Fb:()=>S,K8:()=>Y});var n=i(47606),s=i(61720),o=i(98642),r=i(25206);function a(...e){switch(e.length){case 1:return(0,r.NC)("contextkey.scanner.hint.didYouMean1","Did you mean {0}?",e[0]);case 2:return(0,r.NC)("contextkey.scanner.hint.didYouMean2","Did you mean {0} or {1}?",e[0],e[1]);case 3:return(0,r.NC)("contextkey.scanner.hint.didYouMean3","Did you mean {0}, {1} or {2}?",e[0],e[1],e[2]);default:return}}const c=(0,r.NC)("contextkey.scanner.hint.didYouForgetToOpenOrCloseQuote","Did you forget to open or close the quote?"),u=(0,r.NC)("contextkey.scanner.hint.didYouForgetToEscapeSlash","Did you forget to escape the '/' (slash) character? Put two backslashes before it to escape, e.g., '\\\\/'.");class l{constructor(){this._input="",this._start=0,this._current=0,this._tokens=[],this._errors=[],this.stringRe=/[a-zA-Z0-9_<>\-\./\\:\*\?\+\[\]\^,#@;"%\$\p{L}-]+/uy}static getLexeme(e){switch(e.type){case 0:return"(";case 1:return")";case 2:return"!";case 3:return e.isTripleEq?"===":"==";case 4:return e.isTripleEq?"!==":"!=";case 5:return"<";case 6:return"<=";case 7:return">=";case 8:return">=";case 9:return"=~";case 10:return e.lexeme;case 11:return"true";case 12:return"false";case 13:return"in";case 14:return"not";case 15:return"&&";case 16:return"||";case 17:return e.lexeme;case 18:return e.lexeme;case 19:return e.lexeme;case 20:return"EOF";default:throw(0,o.L6)(`unhandled token type: ${JSON.stringify(e)}; have you forgotten to add a case?`)}}reset(e){return this._input=e,this._start=0,this._current=0,this._tokens=[],this._errors=[],this}scan(){while(!this._isAtEnd()){this._start=this._current;const e=this._advance();switch(e){case 40:this._addToken(0);break;case 41:this._addToken(1);break;case 33:if(this._match(61)){const e=this._match(61);this._tokens.push({type:4,offset:this._start,isTripleEq:e})}else this._addToken(2);break;case 39:this._quotedString();break;case 47:this._regex();break;case 61:if(this._match(61)){const e=this._match(61);this._tokens.push({type:3,offset:this._start,isTripleEq:e})}else this._match(126)?this._addToken(9):this._error(a("==","=~"));break;case 60:this._addToken(this._match(61)?6:5);break;case 62:this._addToken(this._match(61)?8:7);break;case 38:this._match(38)?this._addToken(15):this._error(a("&&"));break;case 124:this._match(124)?this._addToken(16):this._error(a("||"));break;case 32:case 13:case 9:case 10:case 160:break;default:this._string()}}return this._start=this._current,this._addToken(20),Array.from(this._tokens)}_match(e){return!this._isAtEnd()&&(this._input.charCodeAt(this._current)===e&&(this._current++,!0))}_advance(){return this._input.charCodeAt(this._current++)}_peek(){return this._isAtEnd()?0:this._input.charCodeAt(this._current)}_addToken(e){this._tokens.push({type:e,offset:this._start})}_error(e){const t=this._start,i=this._input.substring(this._start,this._current),n={type:19,offset:this._start,lexeme:i};this._errors.push({offset:t,lexeme:i,additionalInfo:e}),this._tokens.push(n)}_string(){this.stringRe.lastIndex=this._start;const e=this.stringRe.exec(this._input);if(e){this._current=this._start+e[0].length;const t=this._input.substring(this._start,this._current),i=l._keywords.get(t);i?this._addToken(i):this._tokens.push({type:17,lexeme:t,offset:this._start})}}_quotedString(){while(39!==this._peek()&&!this._isAtEnd())this._advance();this._isAtEnd()?this._error(c):(this._advance(),this._tokens.push({type:18,lexeme:this._input.substring(this._start+1,this._current-1),offset:this._start+1}))}_regex(){let e=this._current,t=!1,i=!1;while(1){if(e>=this._input.length)return this._current=e,void this._error(u);const n=this._input.charCodeAt(e);if(t)t=!1;else{if(47===n&&!i){e++;break}91===n?i=!0:92===n?t=!0:93===n&&(i=!1)}e++}while(e=this._input.length}}l._regexFlags=new Set(["i","g","s","m","y","u"].map((e=>e.charCodeAt(0)))),l._keywords=new Map([["not",14],["in",13],["false",12],["true",11]]);var d=i(21881);const h=new Map;h.set("false",!1),h.set("true",!0),h.set("isMac",n.dz),h.set("isLinux",n.IJ),h.set("isWindows",n.ED),h.set("isWeb",n.$L),h.set("isMacNative",n.dz&&!n.$L),h.set("isEdge",n.un),h.set("isFirefox",n.vU),h.set("isChrome",n.i7),h.set("isSafari",n.G6);const p=Object.prototype.hasOwnProperty,g={regexParsingWithErrorRecovery:!0},f=(0,r.NC)("contextkey.parser.error.emptyString","Empty context key expression"),y=(0,r.NC)("contextkey.parser.error.emptyString.hint","Did you forget to write an expression? You can also put 'false' or 'true' to always evaluate to false or true, respectively."),m=(0,r.NC)("contextkey.parser.error.noInAfterNot","'in' after 'not'."),C=(0,r.NC)("contextkey.parser.error.closingParenthesis","closing parenthesis ')'"),v=(0,r.NC)("contextkey.parser.error.unexpectedToken","Unexpected token"),_=(0,r.NC)("contextkey.parser.error.unexpectedToken.hint","Did you forget to put && or || before the token?"),b=(0,r.NC)("contextkey.parser.error.unexpectedEOF","Unexpected end of expression"),w=(0,r.NC)("contextkey.parser.error.unexpectedEOF.hint","Did you forget to put a context key?");class x{constructor(e=g){this._config=e,this._scanner=new l,this._tokens=[],this._current=0,this._parsingErrors=[],this._flagsGYRe=/g|y/g}parse(e){if(""!==e){this._tokens=this._scanner.reset(e).scan(),this._current=0,this._parsingErrors=[];try{const e=this._expr();if(!this._isAtEnd()){const e=this._peek(),t=17===e.type?_:void 0;throw this._parsingErrors.push({message:v,offset:e.offset,lexeme:l.getLexeme(e),additionalInfo:t}),x._parseError}return e}catch(t){if(t!==x._parseError)throw t;return}}else this._parsingErrors.push({message:f,offset:0,lexeme:"",additionalInfo:y})}_expr(){return this._or()}_or(){const e=[this._and()];while(this._matchOne(16)){const t=this._and();e.push(t)}return 1===e.length?e[0]:k.or(...e)}_and(){const e=[this._term()];while(this._matchOne(15)){const t=this._term();e.push(t)}return 1===e.length?e[0]:k.and(...e)}_term(){if(this._matchOne(2)){const e=this._peek();switch(e.type){case 11:return this._advance(),M.INSTANCE;case 12:return this._advance(),I.INSTANCE;case 0:{this._advance();const e=this._expr();return this._consume(1,C),null===e||void 0===e?void 0:e.negate()}case 17:return this._advance(),R.create(e.lexeme);default:throw this._errExpectedButGot("KEY | true | false | '(' expression ')'",e)}}return this._primary()}_primary(){const e=this._peek();switch(e.type){case 11:return this._advance(),k.true();case 12:return this._advance(),k.false();case 0:{this._advance();const e=this._expr();return this._consume(1,C),e}case 17:{const n=e.lexeme;if(this._advance(),this._matchOne(9)){const e=this._peek();if(!this._config.regexParsingWithErrorRecovery){if(this._advance(),10!==e.type)throw this._errExpectedButGot("REGEX",e);const i=e.lexeme,s=i.lastIndexOf("/"),o=s===i.length-1?void 0:this._removeFlagsGY(i.substring(s+1));let r;try{r=new RegExp(i.substring(1,s),o)}catch(t){throw this._errExpectedButGot("REGEX",e)}return F.create(n,r)}switch(e.type){case 10:case 19:{const i=[e.lexeme];this._advance();let s=this._peek(),o=0;for(let t=0;t=0){const r=t.slice(n+1,s),a="i"===t[s+1]?"i":"";try{o=new RegExp(r,a)}catch(i){throw this._errExpectedButGot("REGEX",e)}}}if(null===o)throw this._errExpectedButGot("REGEX",e);return F.create(n,o)}default:throw this._errExpectedButGot("REGEX",this._peek())}}if(this._matchOne(14)){this._consume(13,m);const e=this._value();return k.notIn(n,e)}const o=this._peek().type;switch(o){case 3:{this._advance();const e=this._value();if(18===this._previous().type)return k.equals(n,e);switch(e){case"true":return k.has(n);case"false":return k.not(n);default:return k.equals(n,e)}}case 4:{this._advance();const e=this._value();if(18===this._previous().type)return k.notEquals(n,e);switch(e){case"true":return k.not(n);case"false":return k.has(n);default:return k.notEquals(n,e)}}case 5:return this._advance(),L.create(n,this._value());case 6:return this._advance(),j.create(n,this._value());case 7:return this._advance(),K.create(n,this._value());case 8:return this._advance(),V.create(n,this._value());case 13:return this._advance(),k.in(n,this._value());default:return k.has(n)}}case 20:throw this._parsingErrors.push({message:b,offset:e.offset,lexeme:"",additionalInfo:w}),x._parseError;default:throw this._errExpectedButGot("true | false | KEY \n\t| KEY '=~' REGEX \n\t| KEY ('==' | '!=' | '<' | '<=' | '>' | '>=' | 'in' | 'not' 'in') value",this._peek())}}_value(){const e=this._peek();switch(e.type){case 17:case 18:return this._advance(),e.lexeme;case 11:return this._advance(),"true";case 12:return this._advance(),"false";case 13:return this._advance(),"in";default:return""}}_removeFlagsGY(e){return e.replaceAll(this._flagsGYRe,"")}_previous(){return this._tokens[this._current-1]}_matchOne(e){return!!this._check(e)&&(this._advance(),!0)}_advance(){return this._isAtEnd()||this._current++,this._previous()}_consume(e,t){if(this._check(e))return this._advance();throw this._errExpectedButGot(t,this._peek())}_errExpectedButGot(e,t,i){const n=(0,r.NC)("contextkey.parser.error.expectedButGot","Expected: {0}\nReceived: '{1}'.",e,l.getLexeme(t)),s=t.offset,o=l.getLexeme(t);return this._parsingErrors.push({message:n,offset:s,lexeme:o,additionalInfo:i}),x._parseError}_check(e){return this._peek().type===e}_peek(){return this._tokens[this._current]}_isAtEnd(){return 20===this._peek().type}}x._parseError=new Error;class k{static false(){return M.INSTANCE}static true(){return I.INSTANCE}static has(e){return N.create(e)}static equals(e,t){return A.create(e,t)}static notEquals(e,t){return O.create(e,t)}static regex(e,t){return F.create(e,t)}static in(e,t){return E.create(e,t)}static notIn(e,t){return D.create(e,t)}static not(e){return R.create(e)}static and(...e){return $.create(e,null,!0)}static or(...e){return W.create(e,null,!0)}static deserialize(e){if(void 0===e||null===e)return;const t=this._parser.parse(e);return t}}function S(e,t){const i=e?e.substituteConstants():void 0,n=t?t.substituteConstants():void 0;return!i&&!n||!(!i||!n)&&i.equals(n)}function T(e,t){return e.cmp(t)}k._parser=new x({regexParsingWithErrorRecovery:!1});class M{constructor(){this.type=0}cmp(e){return this.type-e.type}equals(e){return e.type===this.type}substituteConstants(){return this}evaluate(e){return!1}serialize(){return"false"}keys(){return[]}negate(){return I.INSTANCE}}M.INSTANCE=new M;class I{constructor(){this.type=1}cmp(e){return this.type-e.type}equals(e){return e.type===this.type}substituteConstants(){return this}evaluate(e){return!0}serialize(){return"true"}keys(){return[]}negate(){return M.INSTANCE}}I.INSTANCE=new I;class N{static create(e,t=null){const i=h.get(e);return"boolean"===typeof i?i?I.INSTANCE:M.INSTANCE:new N(e,t)}constructor(e,t){this.key=e,this.negated=t,this.type=2}cmp(e){return e.type!==this.type?this.type-e.type:G(this.key,e.key)}equals(e){return e.type===this.type&&this.key===e.key}substituteConstants(){const e=h.get(this.key);return"boolean"===typeof e?e?I.INSTANCE:M.INSTANCE:this}evaluate(e){return!!e.getValue(this.key)}serialize(){return this.key}keys(){return[this.key]}negate(){return this.negated||(this.negated=R.create(this.key,this)),this.negated}}class A{static create(e,t,i=null){if("boolean"===typeof t)return t?N.create(e,i):R.create(e,i);const n=h.get(e);if("boolean"===typeof n){const e=n?"true":"false";return t===e?I.INSTANCE:M.INSTANCE}return new A(e,t,i)}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=4}cmp(e){return e.type!==this.type?this.type-e.type:z(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type&&(this.key===e.key&&this.value===e.value)}substituteConstants(){const e=h.get(this.key);if("boolean"===typeof e){const t=e?"true":"false";return this.value===t?I.INSTANCE:M.INSTANCE}return this}evaluate(e){return e.getValue(this.key)==this.value}serialize(){return`${this.key} == '${this.value}'`}keys(){return[this.key]}negate(){return this.negated||(this.negated=O.create(this.key,this.value,this)),this.negated}}class E{static create(e,t){return new E(e,t)}constructor(e,t){this.key=e,this.valueKey=t,this.type=10,this.negated=null}cmp(e){return e.type!==this.type?this.type-e.type:z(this.key,this.valueKey,e.key,e.valueKey)}equals(e){return e.type===this.type&&(this.key===e.key&&this.valueKey===e.valueKey)}substituteConstants(){return this}evaluate(e){const t=e.getValue(this.valueKey),i=e.getValue(this.key);return Array.isArray(t)?t.includes(i):"string"===typeof i&&"object"===typeof t&&null!==t&&p.call(t,i)}serialize(){return`${this.key} in '${this.valueKey}'`}keys(){return[this.key,this.valueKey]}negate(){return this.negated||(this.negated=D.create(this.key,this.valueKey)),this.negated}}class D{static create(e,t){return new D(e,t)}constructor(e,t){this.key=e,this.valueKey=t,this.type=11,this._negated=E.create(e,t)}cmp(e){return e.type!==this.type?this.type-e.type:this._negated.cmp(e._negated)}equals(e){return e.type===this.type&&this._negated.equals(e._negated)}substituteConstants(){return this}evaluate(e){return!this._negated.evaluate(e)}serialize(){return`${this.key} not in '${this.valueKey}'`}keys(){return this._negated.keys()}negate(){return this._negated}}class O{static create(e,t,i=null){if("boolean"===typeof t)return t?R.create(e,i):N.create(e,i);const n=h.get(e);if("boolean"===typeof n){const e=n?"true":"false";return t===e?M.INSTANCE:I.INSTANCE}return new O(e,t,i)}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=5}cmp(e){return e.type!==this.type?this.type-e.type:z(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type&&(this.key===e.key&&this.value===e.value)}substituteConstants(){const e=h.get(this.key);if("boolean"===typeof e){const t=e?"true":"false";return this.value===t?M.INSTANCE:I.INSTANCE}return this}evaluate(e){return e.getValue(this.key)!=this.value}serialize(){return`${this.key} != '${this.value}'`}keys(){return[this.key]}negate(){return this.negated||(this.negated=A.create(this.key,this.value,this)),this.negated}}class R{static create(e,t=null){const i=h.get(e);return"boolean"===typeof i?i?M.INSTANCE:I.INSTANCE:new R(e,t)}constructor(e,t){this.key=e,this.negated=t,this.type=3}cmp(e){return e.type!==this.type?this.type-e.type:G(this.key,e.key)}equals(e){return e.type===this.type&&this.key===e.key}substituteConstants(){const e=h.get(this.key);return"boolean"===typeof e?e?M.INSTANCE:I.INSTANCE:this}evaluate(e){return!e.getValue(this.key)}serialize(){return`!${this.key}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=N.create(this.key,this)),this.negated}}function P(e,t){if("string"===typeof e){const t=parseFloat(e);isNaN(t)||(e=t)}return"string"===typeof e||"number"===typeof e?t(e):M.INSTANCE}class K{static create(e,t,i=null){return P(t,(t=>new K(e,t,i)))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=12}cmp(e){return e.type!==this.type?this.type-e.type:z(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type&&(this.key===e.key&&this.value===e.value)}substituteConstants(){return this}evaluate(e){return"string"!==typeof this.value&&parseFloat(e.getValue(this.key))>this.value}serialize(){return`${this.key} > ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=j.create(this.key,this.value,this)),this.negated}}class V{static create(e,t,i=null){return P(t,(t=>new V(e,t,i)))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=13}cmp(e){return e.type!==this.type?this.type-e.type:z(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type&&(this.key===e.key&&this.value===e.value)}substituteConstants(){return this}evaluate(e){return"string"!==typeof this.value&&parseFloat(e.getValue(this.key))>=this.value}serialize(){return`${this.key} >= ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=L.create(this.key,this.value,this)),this.negated}}class L{static create(e,t,i=null){return P(t,(t=>new L(e,t,i)))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=14}cmp(e){return e.type!==this.type?this.type-e.type:z(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type&&(this.key===e.key&&this.value===e.value)}substituteConstants(){return this}evaluate(e){return"string"!==typeof this.value&&parseFloat(e.getValue(this.key))new j(e,t,i)))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=15}cmp(e){return e.type!==this.type?this.type-e.type:z(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type&&(this.key===e.key&&this.value===e.value)}substituteConstants(){return this}evaluate(e){return"string"!==typeof this.value&&parseFloat(e.getValue(this.key))<=this.value}serialize(){return`${this.key} <= ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=K.create(this.key,this.value,this)),this.negated}}class F{static create(e,t){return new F(e,t)}constructor(e,t){this.key=e,this.regexp=t,this.type=7,this.negated=null}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.keye.key)return 1;const t=this.regexp?this.regexp.source:"",i=e.regexp?e.regexp.source:"";return ti?1:0}equals(e){if(e.type===this.type){const t=this.regexp?this.regexp.source:"",i=e.regexp?e.regexp.source:"";return this.key===e.key&&t===i}return!1}substituteConstants(){return this}evaluate(e){const t=e.getValue(this.key);return!!this.regexp&&this.regexp.test(t)}serialize(){const e=this.regexp?`/${this.regexp.source}/${this.regexp.flags}`:"/invalid/";return`${this.key} =~ ${e}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=B.create(this)),this.negated}}class B{static create(e){return new B(e)}constructor(e){this._actual=e,this.type=8}cmp(e){return e.type!==this.type?this.type-e.type:this._actual.cmp(e._actual)}equals(e){return e.type===this.type&&this._actual.equals(e._actual)}substituteConstants(){return this}evaluate(e){return!this._actual.evaluate(e)}serialize(){return`!(${this._actual.serialize()})`}keys(){return this._actual.keys()}negate(){return this._actual}}function H(e){let t=null;for(let i=0,n=e.length;ie.expr.length)return 1;for(let t=0,i=this.expr.length;t1){const e=n[n.length-1];if(9!==e.type)break;n.pop();const t=n.pop(),s=0===n.length,o=W.create(e.expr.map((e=>$.create([e,t],null,i))),null,s);o&&(n.push(o),n.sort(T))}if(1===n.length)return n[0];if(i){for(let e=0;ee.serialize())).join(" && ")}keys(){const e=[];for(const t of this.expr)e.push(...t.keys());return e}negate(){if(!this.negated){const e=[];for(const t of this.expr)e.push(t.negate());this.negated=W.create(e,this,!0)}return this.negated}}class W{static create(e,t,i){return W._normalizeArr(e,t,i)}constructor(e,t){this.expr=e,this.negated=t,this.type=9}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.expr.lengthe.expr.length)return 1;for(let t=0,i=this.expr.length;te.serialize())).join(" || ")}keys(){const e=[];for(const t of this.expr)e.push(...t.keys());return e}negate(){if(!this.negated){const e=[];for(const t of this.expr)e.push(t.negate());while(e.length>1){const t=e.shift(),i=e.shift(),n=[];for(const e of Q(t))for(const t of Q(i))n.push($.create([e,t],null,!1));e.unshift(W.create(n,null,!1))}this.negated=W.create(e,this,!0)}return this.negated}}class q extends N{static all(){return q._info.values()}constructor(e,t,i){super(e,null),this._defaultValue=t,"object"===typeof i?q._info.push(Object.assign(Object.assign({},i),{key:e})):!0!==i&&q._info.push({key:e,description:i,type:null!==t&&void 0!==t?typeof t:void 0})}bindTo(e){return e.createKey(this.key,this._defaultValue)}getValue(e){return e.getContextKeyValue(this.key)}toNegated(){return this.negate()}isEqualTo(e){return A.create(this.key,e)}}q._info=[];const U=(0,d.yh)("contextKeyService");function G(e,t){return et?1:0}function z(e,t,i,n){return ei?1:tn?1:0}function Y(e,t){if(0===e.type||1===t.type)return!0;if(9===e.type)return 9===t.type&&J(e.expr,t.expr);if(9===t.type){for(const i of t.expr)if(Y(e,i))return!0;return!1}if(6===e.type){if(6===t.type)return J(t.expr,e.expr);for(const i of e.expr)if(Y(i,t))return!0;return!1}return e.equals(t)}function J(e,t){let i=0,n=0;while(i{i.d(t,{Pf:()=>a,cv:()=>r,d0:()=>c});var n=i(47606),s=i(25206),o=i(37174);new o.uy("isMac",n.dz,(0,s.NC)("isMac","Whether the operating system is macOS")),new o.uy("isLinux",n.IJ,(0,s.NC)("isLinux","Whether the operating system is Linux"));const r=new o.uy("isWindows",n.ED,(0,s.NC)("isWindows","Whether the operating system is Windows")),a=new o.uy("isWeb",n.$L,(0,s.NC)("isWeb","Whether the platform is a web browser")),c=(new o.uy("isMacNative",n.dz&&!n.$L,(0,s.NC)("isMacNative","Whether the operating system is macOS on a non-browser platform")),new o.uy("isIOS",n.gn,(0,s.NC)("isIOS","Whether the operating system is iOS")),new o.uy("isMobile",n.tq,(0,s.NC)("isMobile","Whether the platform is a mobile web browser")),new o.uy("isDevelopment",!1,!0),new o.uy("productQualityType","",(0,s.NC)("productQualityType","Quality type of VS Code")),"inputFocus");new o.uy(c,!1,(0,s.NC)("inputFocus","Whether keyboard focus is inside an input box"))},4060:(e,t,i)=>{i.d(t,{L:()=>b});var n=i(2548),s=i(10205),o=i(11271),r=i(70959),a=i(94700),c=i(82693),u=i(37174),l=i(15285),d=i(18736),h=i(38857),p=i(75467),g=i(69969),f=i(98642),y=i(22454);class m{constructor(e,t,i,n){this.contextViewService=e,this.telemetryService=t,this.notificationService=i,this.keybindingService=n,this.focusToReturn=null,this.lastContainer=null,this.block=null,this.blockDisposable=null,this.options={blockMouse:!0}}configure(e){this.options=e}showContextMenu(e){const t=e.getActions();if(!t.length)return;let i;this.focusToReturn=document.activeElement;const o=(0,n.Re)(e.domForShadowRoot)?e.domForShadowRoot:void 0;this.contextViewService.showContextView({getAnchor:()=>e.getAnchor(),canRelayout:!1,anchorAlignment:e.anchorAlignment,anchorAxisAlignment:e.anchorAxisAlignment,render:o=>{var a;this.lastContainer=o;const c=e.getMenuClassName?e.getMenuClassName():"";c&&(o.className+=" "+c),this.options.blockMouse&&(this.block=o.appendChild((0,n.$)(".context-view-block")),this.block.style.position="fixed",this.block.style.cursor="initial",this.block.style.left="0",this.block.style.top="0",this.block.style.width="100%",this.block.style.height="100%",this.block.style.zIndex="-1",null===(a=this.blockDisposable)||void 0===a||a.dispose(),this.blockDisposable=(0,n.nm)(this.block,n.tw.MOUSE_DOWN,(e=>e.stopPropagation())));const u=new r.SL,l=e.actionRunner||new s.Wi;return l.onWillRun((t=>this.onActionRun(t,!e.skipTelemetry)),this,u),l.onDidRun(this.onDidActionRun,this,u),i=new g.v2(o,t,{actionViewItemProvider:e.getActionViewItem,context:e.getActionsContext?e.getActionsContext():null,actionRunner:l,getKeyBinding:e.getKeyBinding?e.getKeyBinding:e=>this.keybindingService.lookupKeybinding(e.id)},y.ZR),i.onDidCancel((()=>this.contextViewService.hideContextView(!0)),null,u),i.onDidBlur((()=>this.contextViewService.hideContextView(!0)),null,u),u.add((0,n.nm)(window,n.tw.BLUR,(()=>this.contextViewService.hideContextView(!0)))),u.add((0,n.nm)(window,n.tw.MOUSE_DOWN,(e=>{if(e.defaultPrevented)return;const t=new p.n(e);let i=t.target;if(!t.rightButton){while(i){if(i===o)return;i=i.parentElement}this.contextViewService.hideContextView(!0)}}))),(0,r.F8)(u,i)},focus:()=>{null===i||void 0===i||i.focus(!!e.autoSelectFirstItem)},onHide:t=>{var i,s,o;null===(i=e.onHide)||void 0===i||i.call(e,!!t),this.block&&(this.block.remove(),this.block=null),null===(s=this.blockDisposable)||void 0===s||s.dispose(),this.blockDisposable=null,this.lastContainer&&((0,n.vY)()===this.lastContainer||(0,n.jg)((0,n.vY)(),this.lastContainer))&&(null===(o=this.focusToReturn)||void 0===o||o.focus()),this.lastContainer=null}},o,!!o)}onActionRun(e,t){t&&this.telemetryService.publicLog2("workbenchActionExecuted",{id:e.action.id,from:"contextMenu"}),this.contextViewService.hideContextView(!1)}onDidActionRun(e){e.error&&!(0,f.n2)(e.error)&&this.notificationService.error(e.error)}}var C=i(93753),v=function(e,t,i,n){var s,o=arguments.length,r=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(s=e[a])&&(r=(o<3?s(r):o>3?s(t,i,r):s(t,i))||r);return o>3&&r&&Object.defineProperty(t,i,r),r},_=function(e,t){return function(i,n){t(i,n,e)}};let b=class extends r.JT{get contextMenuHandler(){return this._contextMenuHandler||(this._contextMenuHandler=new m(this.contextViewService,this.telemetryService,this.notificationService,this.keybindingService)),this._contextMenuHandler}constructor(e,t,i,n,s,r){super(),this.telemetryService=e,this.notificationService=t,this.contextViewService=i,this.keybindingService=n,this.menuService=s,this.contextKeyService=r,this._contextMenuHandler=void 0,this._onDidShowContextMenu=this._store.add(new o.Q5),this._onDidHideContextMenu=this._store.add(new o.Q5)}configure(e){this.contextMenuHandler.configure(e)}showContextMenu(e){e=w.transform(e,this.menuService,this.contextKeyService),this.contextMenuHandler.showContextMenu(Object.assign(Object.assign({},e),{onHide:t=>{var i;null===(i=e.onHide)||void 0===i||i.call(e,t),this._onDidHideContextMenu.fire()}})),n._q.getInstance().resetKeyStatus(),this._onDidShowContextMenu.fire()}};var w;b=v([_(0,h.b),_(1,d.lT),_(2,C.u),_(3,l.d),_(4,c.co),_(5,u.i6)],b),function(e){function t(e){return e&&e.menuId instanceof c.eH}function i(e,i,n){if(!t(e))return e;const{menuId:o,menuActionOptions:r,contextKeyService:c}=e;return Object.assign(Object.assign({},e),{getActions:()=>{const t=[];if(o){const e=i.createMenu(o,null!==c&&void 0!==c?c:n);(0,a.LJ)(e,r,t),e.dispose()}return e.getActions?s.Z0.join(e.getActions(),t):t}})}e.transform=i}(w||(w={}))},93753:(e,t,i)=>{i.d(t,{i:()=>o,u:()=>s});var n=i(21881);const s=(0,n.yh)("contextViewService"),o=(0,n.yh)("contextMenuService")},59669:(e,t,i)=>{i.d(t,{g:()=>c});var n=i(17232),s=i(70959),o=i(38079),r=function(e,t,i,n){var s,o=arguments.length,r=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(s=e[a])&&(r=(o<3?s(r):o>3?s(t,i,r):s(t,i))||r);return o>3&&r&&Object.defineProperty(t,i,r),r},a=function(e,t){return function(i,n){t(i,n,e)}};let c=class extends s.JT{constructor(e){super(),this.layoutService=e,this.currentViewDisposable=s.JT.None,this.container=e.hasContainer?e.container:null,this.contextView=this._register(new n.Ry(this.container,1)),this.layout(),this._register(e.onDidLayout((()=>this.layout())))}setContainer(e,t){this.contextView.setContainer(e,t||1)}showContextView(e,t,i){t?t===this.container&&this.shadowRoot===i||(this.container=t,this.setContainer(t,i?3:2)):this.layoutService.hasContainer&&this.container!==this.layoutService.container&&(this.container=this.layoutService.container,this.setContainer(this.container,1)),this.shadowRoot=i,this.contextView.show(e);const n=(0,s.OF)((()=>{this.currentViewDisposable===n&&this.hideContextView()}));return this.currentViewDisposable=n,n}getContextViewElement(){return this.contextView.getViewElement()}layout(){this.contextView.layout()}hideContextView(e){this.contextView.hide(e)}};c=r([a(0,o.F)],c)},8283:(e,t,i)=>{i.d(t,{S:()=>s});var n=i(21881);const s=(0,n.yh)("dialogService")},60808:(e,t,i)=>{i.d(t,{Ej:()=>a,Km:()=>s});var n=i(39672);const s={EDITORS:"CodeEditors",FILES:"CodeFiles"};class o{}const r={DragAndDropContribution:"workbench.contributions.dragAndDrop"};n.B.add(r.DragAndDropContribution,new o);class a{constructor(){}static getInstance(){return a.INSTANCE}hasData(e){return e&&e===this.proto}getData(e){if(this.hasData(e))return this.data}}a.INSTANCE=new a},888:(e,t,i)=>{var n;i.d(t,{v:()=>n}),function(e){e[e["API"]=0]="API",e[e["USER"]=1]="USER"}(n||(n={}))}}]); \ No newline at end of file diff --git a/dist/js/101.7ab3ac19.js b/dist/js/101.7ab3ac19.js new file mode 100644 index 00000000..52fe78ca --- /dev/null +++ b/dist/js/101.7ab3ac19.js @@ -0,0 +1 @@ +"use strict";(globalThis["webpackChunkfrontend"]=globalThis["webpackChunkfrontend"]||[]).push([[101],{78097:(e,t,i)=>{i.d(t,{Fw:()=>w,IH:()=>L,Jy:()=>k,KY:()=>I,M8:()=>E,R7:()=>R,SC:()=>P,rc:()=>x,vk:()=>T});var s=i(2548),o=i(78089),n=i(10205),r=i(8419),a=i(99588),l=i(60204),d=i(11271),c=i(2179),h=i(48077),u=i(35195),g=i(24788),p=i(47883),_=i(25206),m=i(94700),f=i(37174),v=i(39326),b=i(21881),S=i(47277),y=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},C=function(e,t){return function(i,s){t(i,s,e)}};const w=(0,b.yh)("IPeekViewService");var k;(0,v.z)(w,class{constructor(){this._widgets=new Map}addExclusiveWidget(e,t){const i=this._widgets.get(e);i&&(i.listener.dispose(),i.widget.dispose());const s=()=>{const i=this._widgets.get(e);i&&i.widget===t&&(i.listener.dispose(),this._widgets.delete(e))};this._widgets.set(e,{widget:t,listener:t.onDidClose(s)})}},1),function(e){e.inPeekEditor=new f.uy("inReferenceSearchEditor",!0,_.NC("inReferenceSearchEditor","Whether the current code editor is embedded inside peek")),e.notInPeekEditor=e.inPeekEditor.toNegated()}(k||(k={}));let D=class{constructor(e,t){e instanceof g.H&&k.inPeekEditor.bindTo(t)}dispose(){}};function x(e){const t=e.get(u.$).getFocusedCodeEditor();return t instanceof g.H?t.getParentEditor():t}D.ID="editor.contrib.referenceController",D=y([C(1,f.i6)],D),(0,h._K)(D.ID,D,0);const N={headerBackgroundColor:l.Il.white,primaryHeadingColor:l.Il.fromHex("#333333"),secondaryHeadingColor:l.Il.fromHex("#6c6c6cb3")};let T=class extends p.I{constructor(e,t,i){super(e,t),this.instantiationService=i,this._onDidClose=new d.Q5,this.onDidClose=this._onDidClose.event,c.jB(this.options,N,!1)}dispose(){this.disposed||(this.disposed=!0,super.dispose(),this._onDidClose.fire(this))}style(e){const t=this.options;e.headerBackgroundColor&&(t.headerBackgroundColor=e.headerBackgroundColor),e.primaryHeadingColor&&(t.primaryHeadingColor=e.primaryHeadingColor),e.secondaryHeadingColor&&(t.secondaryHeadingColor=e.secondaryHeadingColor),super.style(e)}_applyStyles(){super._applyStyles();const e=this.options;this._headElement&&e.headerBackgroundColor&&(this._headElement.style.backgroundColor=e.headerBackgroundColor.toString()),this._primaryHeading&&e.primaryHeadingColor&&(this._primaryHeading.style.color=e.primaryHeadingColor.toString()),this._secondaryHeading&&e.secondaryHeadingColor&&(this._secondaryHeading.style.color=e.secondaryHeadingColor.toString()),this._bodyElement&&e.frameColor&&(this._bodyElement.style.borderColor=e.frameColor.toString())}_fillContainer(e){this.setCssClass("peekview-widget"),this._headElement=s.$(".head"),this._bodyElement=s.$(".body"),this._fillHead(this._headElement),this._fillBody(this._bodyElement),e.appendChild(this._headElement),e.appendChild(this._bodyElement)}_fillHead(e,t){this._titleElement=s.$(".peekview-title"),this.options.supportOnTitleClick&&(this._titleElement.classList.add("clickable"),s.mu(this._titleElement,"click",(e=>this._onTitleClick(e)))),s.R3(this._headElement,this._titleElement),this._fillTitleIcon(this._titleElement),this._primaryHeading=s.$("span.filename"),this._secondaryHeading=s.$("span.dirname"),this._metaHeading=s.$("span.meta"),s.R3(this._titleElement,this._primaryHeading,this._secondaryHeading,this._metaHeading);const i=s.$(".peekview-actions");s.R3(this._headElement,i);const l=this._getActionBarOptions();this._actionbarWidget=new o.o(i,l),this._disposables.add(this._actionbarWidget),t||this._actionbarWidget.push(new n.aU("peekview.close",_.NC("label.close","Close"),a.k.asClassName(r.l.close),!0,(()=>(this.dispose(),Promise.resolve()))),{label:!1,icon:!0})}_fillTitleIcon(e){}_getActionBarOptions(){return{actionViewItemProvider:m.Id.bind(void 0,this.instantiationService),orientation:0}}_onTitleClick(e){}setTitle(e,t){this._primaryHeading&&this._secondaryHeading&&(this._primaryHeading.innerText=e,this._primaryHeading.setAttribute("title",e),t?this._secondaryHeading.innerText=t:s.PO(this._secondaryHeading))}setMetaTitle(e){this._metaHeading&&(e?(this._metaHeading.innerText=e,s.$Z(this._metaHeading)):s.Cp(this._metaHeading))}_doLayout(e,t){if(!this._isShowing&&e<0)return void this.dispose();const i=Math.ceil(1.2*this.editor.getOption(65)),s=Math.round(e-(i+2));this._doLayoutHead(i,t),this._doLayoutBody(s,t)}_doLayoutHead(e,t){this._headElement&&(this._headElement.style.height=`${e}px`,this._headElement.style.lineHeight=this._headElement.style.height)}_doLayoutBody(e,t){this._bodyElement&&(this._bodyElement.style.height=`${e}px`)}};T=y([C(2,b.TG)],T);const I=(0,S.P6G)("peekViewTitle.background",{dark:"#252526",light:"#F3F3F3",hcDark:l.Il.black,hcLight:l.Il.white},_.NC("peekViewTitleBackground","Background color of the peek view title area.")),L=(0,S.P6G)("peekViewTitleLabel.foreground",{dark:l.Il.white,light:l.Il.black,hcDark:l.Il.white,hcLight:S.NOs},_.NC("peekViewTitleForeground","Color of the peek view title.")),R=(0,S.P6G)("peekViewTitleDescription.foreground",{dark:"#ccccccb3",light:"#616161",hcDark:"#FFFFFF99",hcLight:"#292929"},_.NC("peekViewTitleInfoForeground","Color of the peek view title info.")),P=(0,S.P6G)("peekView.border",{dark:S.c63,light:S.c63,hcDark:S.lRK,hcLight:S.lRK},_.NC("peekViewBorder","Color of the peek view borders and arrow.")),E=(0,S.P6G)("peekViewResult.background",{dark:"#252526",light:"#F3F3F3",hcDark:l.Il.black,hcLight:l.Il.white},_.NC("peekViewResultsBackground","Background color of the peek view result list.")),M=((0,S.P6G)("peekViewResult.lineForeground",{dark:"#bbbbbb",light:"#646465",hcDark:l.Il.white,hcLight:S.NOs},_.NC("peekViewResultsMatchForeground","Foreground color for line nodes in the peek view result list.")),(0,S.P6G)("peekViewResult.fileForeground",{dark:l.Il.white,light:"#1E1E1E",hcDark:l.Il.white,hcLight:S.NOs},_.NC("peekViewResultsFileForeground","Foreground color for file nodes in the peek view result list.")),(0,S.P6G)("peekViewResult.selectionBackground",{dark:"#3399ff33",light:"#3399ff33",hcDark:null,hcLight:null},_.NC("peekViewResultsSelectionBackground","Background color of the selected entry in the peek view result list.")),(0,S.P6G)("peekViewResult.selectionForeground",{dark:l.Il.white,light:"#6C6C6C",hcDark:l.Il.white,hcLight:S.NOs},_.NC("peekViewResultsSelectionForeground","Foreground color of the selected entry in the peek view result list.")),(0,S.P6G)("peekViewEditor.background",{dark:"#001F33",light:"#F2F8FC",hcDark:l.Il.black,hcLight:l.Il.white},_.NC("peekViewEditorBackground","Background color of the peek view editor.")));(0,S.P6G)("peekViewEditorGutter.background",{dark:M,light:M,hcDark:M,hcLight:M},_.NC("peekViewEditorGutterBackground","Background color of the gutter in the peek view editor.")),(0,S.P6G)("peekViewEditorStickyScroll.background",{dark:M,light:M,hcDark:M,hcLight:M},_.NC("peekViewEditorStickScrollBackground","Background color of sticky scroll in the peek view editor.")),(0,S.P6G)("peekViewResult.matchHighlightBackground",{dark:"#ea5c004d",light:"#ea5c004d",hcDark:null,hcLight:null},_.NC("peekViewResultsMatchHighlight","Match highlight color in the peek view result list.")),(0,S.P6G)("peekViewEditor.matchHighlightBackground",{dark:"#ff8f0099",light:"#f5d802de",hcDark:null,hcLight:null},_.NC("peekViewEditorMatchHighlight","Match highlight color in the peek view editor.")),(0,S.P6G)("peekViewEditor.matchHighlightBorder",{dark:null,light:null,hcDark:S.xL1,hcLight:S.xL1},_.NC("peekViewEditorMatchHighlightBorder","Match highlight border in the peek view editor."))},67131:(e,t,i)=>{var s=i(81478),o=i(70959),n=i(48077),r=i(11898),a=i(25206);class l extends o.JT{constructor(e){super(),this.editor=e,this._register(this.editor.onDidAttemptReadOnlyEdit((()=>this._onDidAttemptReadOnlyEdit())))}_onDidAttemptReadOnlyEdit(){const e=r.O.get(this.editor);if(e&&this.editor.hasModel()){let t=this.editor.getOptions().get(90);t||(t=this.editor.isSimpleWidget?new s.W5(a.NC("editor.simple.readonly","Cannot edit in read-only input")):new s.W5(a.NC("editor.readonly","Cannot edit in read-only editor"))),e.showMessage(t,this.editor.getPosition())}}}l.ID="editor.contrib.readOnlyMessageController",(0,n._K)(l.ID,l,2)},83124:(e,t,i)=>{var s=i(70959),o=i(98642),n=i(74016),r=i(47596),a=i(85398),l=i(55191),d=i(32656),c=i(22785),h=i(71295),u=i(54732),g=i(96729),p=i(16458),_=i(3697),m=i(64559),f=i(74792),v=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},b=function(e,t){return function(i,s){t(i,s,e)}};let S=class extends s.JT{constructor(e,t,i,s,o,n){super(),this._watchers=Object.create(null);const r=t=>{this._watchers[t.uri.toString()]=new y(t,e,i,o,n)},a=(e,t)=>{t.dispose(),delete this._watchers[e.uri.toString()]},l=()=>{for(const e of t.getModels()){const t=this._watchers[e.uri.toString()];(0,f.t)(e,i,s)?t||r(e):t&&a(e,t)}};this._register(t.onModelAdded((e=>{(0,f.t)(e,i,s)&&r(e)}))),this._register(t.onModelRemoved((e=>{const t=this._watchers[e.uri.toString()];t&&a(e,t)}))),this._register(s.onDidChangeConfiguration((e=>{e.affectsConfiguration(f.e)&&l()}))),this._register(i.onDidColorThemeChange(l))}dispose(){for(const e of Object.values(this._watchers))e.dispose();super.dispose()}};S=v([b(0,_.s),b(1,n.q),b(2,d.XE),b(3,r.Ui),b(4,u.A),b(5,p.p)],S);let y=class e extends s.JT{constructor(t,i,o,n,r){super(),this._semanticTokensStylingService=i,this._isDisposed=!1,this._model=t,this._provider=r.documentSemanticTokensProvider,this._debounceInformation=n.for(this._provider,"DocumentSemanticTokens",{min:e.REQUEST_MIN_DELAY,max:e.REQUEST_MAX_DELAY}),this._fetchDocumentSemanticTokens=this._register(new a.pY((()=>this._fetchDocumentSemanticTokensNow()),e.REQUEST_MIN_DELAY)),this._currentDocumentResponse=null,this._currentDocumentRequestCancellationTokenSource=null,this._documentProvidersChangeListeners=[],this._providersChangedDuringRequest=!1,this._register(this._model.onDidChangeContent((()=>{this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))}))),this._register(this._model.onDidChangeAttached((()=>{this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))}))),this._register(this._model.onDidChangeLanguage((()=>{this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._currentDocumentRequestCancellationTokenSource&&(this._currentDocumentRequestCancellationTokenSource.cancel(),this._currentDocumentRequestCancellationTokenSource=null),this._setDocumentSemanticTokens(null,null,null,[]),this._fetchDocumentSemanticTokens.schedule(0)})));const l=()=>{(0,s.B9)(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[];for(const e of this._provider.all(t))"function"===typeof e.onDidChange&&this._documentProvidersChangeListeners.push(e.onDidChange((()=>{this._currentDocumentRequestCancellationTokenSource?this._providersChangedDuringRequest=!0:this._fetchDocumentSemanticTokens.schedule(0)})))};l(),this._register(this._provider.onDidChange((()=>{l(),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))}))),this._register(o.onDidColorThemeChange((e=>{this._setDocumentSemanticTokens(null,null,null,[]),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))}))),this._fetchDocumentSemanticTokens.schedule(0)}dispose(){this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._currentDocumentRequestCancellationTokenSource&&(this._currentDocumentRequestCancellationTokenSource.cancel(),this._currentDocumentRequestCancellationTokenSource=null),(0,s.B9)(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[],this._setDocumentSemanticTokens(null,null,null,[]),this._isDisposed=!0,super.dispose()}_fetchDocumentSemanticTokensNow(){if(this._currentDocumentRequestCancellationTokenSource)return;if(!(0,h.Jc)(this._provider,this._model))return void(this._currentDocumentResponse&&this._model.tokenization.setSemanticTokens(null,!1));if(!this._model.isAttachedToEditor())return;const e=new l.A,t=this._currentDocumentResponse?this._currentDocumentResponse.provider:null,i=this._currentDocumentResponse&&this._currentDocumentResponse.resultId||null,s=(0,h.ML)(this._provider,this._model,t,i,e.token);this._currentDocumentRequestCancellationTokenSource=e,this._providersChangedDuringRequest=!1;const n=[],r=this._model.onDidChangeContent((e=>{n.push(e)})),a=new g.G(!1);s.then((e=>{if(this._debounceInformation.update(this._model,a.elapsed()),this._currentDocumentRequestCancellationTokenSource=null,r.dispose(),e){const{provider:t,tokens:i}=e,s=this._semanticTokensStylingService.getStyling(t);this._setDocumentSemanticTokens(t,i||null,s,n)}else this._setDocumentSemanticTokens(null,null,null,n)}),(e=>{const t=e&&(o.n2(e)||"string"===typeof e.message&&-1!==e.message.indexOf("busy"));t||o.dL(e),this._currentDocumentRequestCancellationTokenSource=null,r.dispose(),(n.length>0||this._providersChangedDuringRequest)&&(this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model)))}))}static _copy(e,t,i,s,o){o=Math.min(o,i.length-s,e.length-t);for(let n=0;n{(o.length>0||this._providersChangedDuringRequest)&&!this._fetchDocumentSemanticTokens.isScheduled()&&this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))};if(this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._isDisposed)t&&i&&t.releaseDocumentSemanticTokens(i.resultId);else if(t&&s){if(!i)return this._model.tokenization.setSemanticTokens(null,!0),void r();if((0,h.Vj)(i)){if(!n)return void this._model.tokenization.setSemanticTokens(null,!0);if(0===i.edits.length)i={resultId:i.resultId,data:n.data};else{let t=0;for(const e of i.edits)t+=(e.data?e.data.length:0)-e.deleteCount;const o=n.data,r=new Uint32Array(o.length+t);let a=o.length,l=r.length;for(let d=i.edits.length-1;d>=0;d--){const t=i.edits[d];if(t.start>o.length)return s.warnInvalidEditStart(n.resultId,i.resultId,d,t.start,o.length),void this._model.tokenization.setSemanticTokens(null,!0);const c=a-(t.start+t.deleteCount);c>0&&(e._copy(o,a-c,r,l-c,c),l-=c),t.data&&(e._copy(t.data,0,r,l-t.data.length,t.data.length),l-=t.data.length),a=t.start}a>0&&e._copy(o,0,r,0,a),i={resultId:i.resultId,data:r}}}if((0,h.Vl)(i)){this._currentDocumentResponse=new C(t,i.resultId,i.data);const e=(0,c.h)(i,s,this._model.getLanguageId());if(o.length>0)for(const t of o)for(const i of e)for(const e of t.changes)i.applyEdit(e.range,e.text);this._model.tokenization.setSemanticTokens(e,!0)}else this._model.tokenization.setSemanticTokens(null,!0);r()}else this._model.tokenization.setSemanticTokens(null,!1)}};y.REQUEST_MIN_DELAY=300,y.REQUEST_MAX_DELAY=2e3,y=v([b(1,_.s),b(2,d.XE),b(3,u.A),b(4,p.p)],y);class C{constructor(e,t,i){this.provider=e,this.resultId=t,this.data=i}dispose(){this.provider.releaseDocumentSemanticTokens(this.resultId)}}(0,m.y)(S)},57283:(e,t,i)=>{var s=i(85398),o=i(70959),n=i(48077),r=i(71295),a=i(74792),l=i(22785),d=i(47596),c=i(32656),h=i(54732),u=i(96729),g=i(16458),p=i(3697),_=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},m=function(e,t){return function(i,s){t(i,s,e)}};let f=class extends o.JT{constructor(e,t,i,o,n,r){super(),this._semanticTokensStylingService=t,this._themeService=i,this._configurationService=o,this._editor=e,this._provider=r.documentRangeSemanticTokensProvider,this._debounceInformation=n.for(this._provider,"DocumentRangeSemanticTokens",{min:100,max:500}),this._tokenizeViewport=this._register(new s.pY((()=>this._tokenizeViewportNow()),100)),this._outstandingRequests=[];const l=()=>{this._editor.hasModel()&&this._tokenizeViewport.schedule(this._debounceInformation.get(this._editor.getModel()))};this._register(this._editor.onDidScrollChange((()=>{l()}))),this._register(this._editor.onDidChangeModel((()=>{this._cancelAll(),l()}))),this._register(this._editor.onDidChangeModelContent((e=>{this._cancelAll(),l()}))),this._register(this._provider.onDidChange((()=>{this._cancelAll(),l()}))),this._register(this._configurationService.onDidChangeConfiguration((e=>{e.affectsConfiguration(a.e)&&(this._cancelAll(),l())}))),this._register(this._themeService.onDidColorThemeChange((()=>{this._cancelAll(),l()}))),l()}_cancelAll(){for(const e of this._outstandingRequests)e.cancel();this._outstandingRequests=[]}_removeOutstandingRequest(e){for(let t=0,i=this._outstandingRequests.length;tthis._requestRange(e,t))))}_requestRange(e,t){const i=e.getVersionId(),o=(0,s.PG)((i=>Promise.resolve((0,r.OG)(this._provider,e,t,i)))),n=new u.G(!1);return o.then((s=>{if(this._debounceInformation.update(e,n.elapsed()),!s||!s.tokens||e.isDisposed()||e.getVersionId()!==i)return;const{provider:o,tokens:r}=s,a=this._semanticTokensStylingService.getStyling(o);e.tokenization.setPartialSemanticTokens(t,(0,l.h)(r,a,e.getLanguageId()))})).then((()=>this._removeOutstandingRequest(o)),(()=>this._removeOutstandingRequest(o))),o}};f.ID="editor.contrib.viewportSemanticTokens",f=_([m(1,p.s),m(2,c.XE),m(3,d.Ui),m(4,h.A),m(5,g.p)],f),(0,n._K)(f.ID,f,1)},71295:(e,t,i)=>{i.d(t,{Jc:()=>m,KO:()=>y,ML:()=>v,OG:()=>w,Vj:()=>p,Vl:()=>g});var s=i(55191),o=i(98642),n=i(95896),r=i(74016),a=i(46871),l=i(55455),d=i(11868),c=i(33162),h=i(16458),u=function(e,t,i,s){function o(e){return e instanceof i?e:new i((function(t){t(e)}))}return new(i||(i=Promise))((function(i,n){function r(e){try{l(s.next(e))}catch(t){n(t)}}function a(e){try{l(s["throw"](e))}catch(t){n(t)}}function l(e){e.done?i(e.value):o(e.value).then(r,a)}l((s=s.apply(e,t||[])).next())}))};function g(e){return e&&!!e.data}function p(e){return e&&Array.isArray(e.edits)}class _{constructor(e,t,i){this.provider=e,this.tokens=t,this.error=i}}function m(e,t){return e.has(t)}function f(e,t){const i=e.orderedGroups(t);return i.length>0?i[0]:[]}function v(e,t,i,s,o){return u(this,void 0,void 0,(function*(){const n=f(e,t),r=yield Promise.all(n.map((e=>u(this,void 0,void 0,(function*(){let n,r=null;try{n=yield e.provideDocumentSemanticTokens(t,e===i?s:null,o)}catch(a){r=a,n=null}return n&&(g(n)||p(n))||(n=null),new _(e,n,r)})))));for(const e of r){if(e.error)throw e.error;if(e.tokens)return e}return r.length>0?r[0]:null}))}function b(e,t){const i=e.orderedGroups(t);return i.length>0?i[0]:null}class S{constructor(e,t){this.provider=e,this.tokens=t}}function y(e,t){return e.has(t)}function C(e,t){const i=e.orderedGroups(t);return i.length>0?i[0]:[]}function w(e,t,i,s){return u(this,void 0,void 0,(function*(){const n=C(e,t),r=yield Promise.all(n.map((e=>u(this,void 0,void 0,(function*(){let n;try{n=yield e.provideDocumentRangeSemanticTokens(t,i,s)}catch(r){(0,o.Cp)(r),n=null}return n&&g(n)||(n=null),new S(e,n)})))));for(const e of r)if(e.tokens)return e;return r.length>0?r[0]:null}))}a.P.registerCommand("_provideDocumentSemanticTokensLegend",((e,...t)=>u(void 0,void 0,void 0,(function*(){const[i]=t;(0,l.p_)(i instanceof n.o);const s=e.get(r.q).getModel(i);if(!s)return;const{documentSemanticTokensProvider:o}=e.get(h.p),d=b(o,s);return d?d[0].getLegend():e.get(a.H).executeCommand("_provideDocumentRangeSemanticTokensLegend",i)})))),a.P.registerCommand("_provideDocumentSemanticTokens",((e,...t)=>u(void 0,void 0,void 0,(function*(){const[i]=t;(0,l.p_)(i instanceof n.o);const o=e.get(r.q).getModel(i);if(!o)return;const{documentSemanticTokensProvider:c}=e.get(h.p);if(!m(c,o))return e.get(a.H).executeCommand("_provideDocumentRangeSemanticTokens",i,o.getFullModelRange());const u=yield v(c,o,null,null,s.T.None);if(!u)return;const{provider:p,tokens:_}=u;if(!_||!g(_))return;const f=(0,d.C)({id:0,type:"full",data:_.data});return _.resultId&&p.releaseDocumentSemanticTokens(_.resultId),f})))),a.P.registerCommand("_provideDocumentRangeSemanticTokensLegend",((e,...t)=>u(void 0,void 0,void 0,(function*(){const[i,o]=t;(0,l.p_)(i instanceof n.o);const a=e.get(r.q).getModel(i);if(!a)return;const{documentRangeSemanticTokensProvider:d}=e.get(h.p),u=C(d,a);if(0===u.length)return;if(1===u.length)return u[0].getLegend();if(!o||!c.e.isIRange(o))return console.warn("provideDocumentRangeSemanticTokensLegend might be out-of-sync with provideDocumentRangeSemanticTokens unless a range argument is passed in"),u[0].getLegend();const g=yield w(d,a,c.e.lift(o),s.T.None);return g?g.provider.getLegend():void 0})))),a.P.registerCommand("_provideDocumentRangeSemanticTokens",((e,...t)=>u(void 0,void 0,void 0,(function*(){const[i,o]=t;(0,l.p_)(i instanceof n.o),(0,l.p_)(c.e.isIRange(o));const a=e.get(r.q).getModel(i);if(!a)return;const{documentRangeSemanticTokensProvider:u}=e.get(h.p),g=yield w(u,a,c.e.lift(o),s.T.None);return g&&g.tokens?(0,d.C)({id:0,type:"full",data:g.tokens.data}):void 0}))))},74792:(e,t,i)=>{i.d(t,{e:()=>s,t:()=>o});const s="editor.semanticHighlighting";function o(e,t,i){var o;const n=null===(o=i.getValue(s,{overrideIdentifier:e.getLanguageId(),resource:e.uri}))||void 0===o?void 0:o.enabled;return"boolean"===typeof n?n:t.getColorTheme().semanticHighlighting}},58151:(e,t,i)=>{i.d(t,{f:()=>v});var s=i(70959),o=i(55455),n=i(48077),r=i(89999),a=i(44950),l=i(97297),d=i(16458),c=i(49864),h=i(25206),u=i(37174),g=i(23034),p=i(69377),_=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},m=function(e,t){return function(i,s){t(i,s,e)}};const f={overwriteBefore:0,overwriteAfter:0,undoStopBefore:!0,undoStopAfter:!0,adjustWhitespace:!0,clipboardText:void 0,overtypingCapturer:void 0};let v=class e{static get(t){return t.getContribution(e.ID)}constructor(t,i,o,n,r){this._editor=t,this._logService=i,this._languageFeaturesService=o,this._languageConfigurationService=r,this._snippetListener=new s.SL,this._modelVersionId=-1,this._inSnippet=e.InSnippetMode.bindTo(n),this._hasNextTabstop=e.HasNextTabstop.bindTo(n),this._hasPrevTabstop=e.HasPrevTabstop.bindTo(n)}dispose(){var e;this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),null===(e=this._session)||void 0===e||e.dispose(),this._snippetListener.dispose()}insert(e,t){try{this._doInsert(e,"undefined"===typeof t?f:Object.assign(Object.assign({},f),t))}catch(i){this.cancel(),this._logService.error(i),this._logService.error("snippet_error"),this._logService.error("insert_template=",e),this._logService.error("existing_template=",this._session?this._session._logInfo():"")}}_doInsert(e,t){var i;if(this._editor.hasModel()){if(this._snippetListener.clear(),t.undoStopBefore&&this._editor.getModel().pushStackElement(),this._session&&"string"!==typeof e&&this.cancel(),this._session?((0,o.p_)("string"===typeof e),this._session.merge(e,t)):(this._modelVersionId=this._editor.getModel().getAlternativeVersionId(),this._session=new p.l(this._editor,e,t,this._languageConfigurationService),this._session.insert()),t.undoStopAfter&&this._editor.getModel().pushStackElement(),null===(i=this._session)||void 0===i?void 0:i.hasChoice){const e={_debugDisplayName:"snippetChoiceCompletions",provideCompletionItems:(e,t)=>{if(!this._session||e!==this._editor.getModel()||!r.L.equals(this._editor.getPosition(),t))return;const{activeChoice:i}=this._session;if(!i||0===i.choice.options.length)return;const s=e.getValueInRange(i.range),o=Boolean(i.choice.options.find((e=>e.value===s))),n=[];for(let r=0;r{null===i||void 0===i||i.dispose(),s=!1},n=()=>{s||(i=this._languageFeaturesService.completionProvider.register({language:t.getLanguageId(),pattern:t.uri.fsPath,scheme:t.uri.scheme,exclusive:!0},e),this._snippetListener.add(i),s=!0)};this._choiceCompletions={provider:e,enable:n,disable:o}}this._updateState(),this._snippetListener.add(this._editor.onDidChangeModelContent((e=>e.isFlush&&this.cancel()))),this._snippetListener.add(this._editor.onDidChangeModel((()=>this.cancel()))),this._snippetListener.add(this._editor.onDidChangeCursorSelection((()=>this._updateState())))}}_updateState(){if(this._session&&this._editor.hasModel()){if(this._modelVersionId===this._editor.getModel().getAlternativeVersionId())return this.cancel();if(!this._session.hasPlaceholder)return this.cancel();if(this._session.isAtLastPlaceholder||!this._session.isSelectionWithinPlaceholders())return this._editor.getModel().pushStackElement(),this.cancel();this._inSnippet.set(!0),this._hasPrevTabstop.set(!this._session.isAtFirstPlaceholder),this._hasNextTabstop.set(!this._session.isAtLastPlaceholder),this._handleChoice()}}_handleChoice(){var e;if(!this._session||!this._editor.hasModel())return void(this._currentChoice=void 0);const{activeChoice:t}=this._session;if(!t||!this._choiceCompletions)return null===(e=this._choiceCompletions)||void 0===e||e.disable(),void(this._currentChoice=void 0);this._currentChoice!==t.choice&&(this._currentChoice=t.choice,this._choiceCompletions.enable(),queueMicrotask((()=>{(0,c.i5)(this._editor,this._choiceCompletions.provider)})))}finish(){while(this._inSnippet.get())this.next()}cancel(e=!1){var t;this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),this._snippetListener.clear(),this._currentChoice=void 0,null===(t=this._session)||void 0===t||t.dispose(),this._session=void 0,this._modelVersionId=-1,e&&this._editor.setSelections([this._editor.getSelection()])}prev(){var e;null===(e=this._session)||void 0===e||e.prev(),this._updateState()}next(){var e;null===(e=this._session)||void 0===e||e.next(),this._updateState()}isInSnippet(){return Boolean(this._inSnippet.get())}};v.ID="snippetController2",v.InSnippetMode=new u.uy("inSnippetMode",!1,(0,h.NC)("inSnippetMode","Whether the editor in current in snippet mode")),v.HasNextTabstop=new u.uy("hasNextTabstop",!1,(0,h.NC)("hasNextTabstop","Whether there is a next tab stop when in snippet mode")),v.HasPrevTabstop=new u.uy("hasPrevTabstop",!1,(0,h.NC)("hasPrevTabstop","Whether there is a previous tab stop when in snippet mode")),v=_([m(1,g.VZ),m(2,d.p),m(3,u.i6),m(4,l.c_)],v),(0,n._K)(v.ID,v,4);const b=n._l.bindToContribution(v.get);(0,n.fK)(new b({id:"jumpToNextSnippetPlaceholder",precondition:u.Ao.and(v.InSnippetMode,v.HasNextTabstop),handler:e=>e.next(),kbOpts:{weight:130,kbExpr:a.u.editorTextFocus,primary:2}})),(0,n.fK)(new b({id:"jumpToPrevSnippetPlaceholder",precondition:u.Ao.and(v.InSnippetMode,v.HasPrevTabstop),handler:e=>e.prev(),kbOpts:{weight:130,kbExpr:a.u.editorTextFocus,primary:1026}})),(0,n.fK)(new b({id:"leaveSnippet",precondition:v.InSnippetMode,handler:e=>e.cancel(!0),kbOpts:{weight:130,kbExpr:a.u.editorTextFocus,primary:9,secondary:[1033]}})),(0,n.fK)(new b({id:"acceptSnippet",precondition:v.InSnippetMode,handler:e=>e.finish()}))},43124:(e,t,i)=>{i.d(t,{Lv:()=>l,Vm:()=>a,Yj:()=>p,xv:()=>n,y1:()=>g});class s{constructor(){this.value="",this.pos=0}static isDigitCharacter(e){return e>=48&&e<=57}static isVariableCharacter(e){return 95===e||e>=97&&e<=122||e>=65&&e<=90}text(e){this.value=e,this.pos=0}tokenText(e){return this.value.substr(e.pos,e.len)}next(){if(this.pos>=this.value.length)return{type:14,pos:this.pos,len:0};const e=this.pos;let t,i=0,o=this.value.charCodeAt(e);if(t=s._table[o],"number"===typeof t)return this.pos+=1,{type:t,pos:e,len:1};if(s.isDigitCharacter(o)){t=8;do{i+=1,o=this.value.charCodeAt(e+i)}while(s.isDigitCharacter(o));return this.pos+=i,{type:t,pos:e,len:i}}if(s.isVariableCharacter(o)){t=9;do{o=this.value.charCodeAt(e+ ++i)}while(s.isVariableCharacter(o)||s.isDigitCharacter(o));return this.pos+=i,{type:t,pos:e,len:i}}t=10;do{i+=1,o=this.value.charCodeAt(e+i)}while(!isNaN(o)&&"undefined"===typeof s._table[o]&&!s.isDigitCharacter(o)&&!s.isVariableCharacter(o));return this.pos+=i,{type:t,pos:e,len:i}}}s._table={[36]:0,[58]:1,[44]:2,[123]:3,[125]:4,[92]:5,[47]:6,[124]:7,[43]:11,[45]:12,[63]:13};class o{constructor(){this._children=[]}appendChild(e){return e instanceof n&&this._children[this._children.length-1]instanceof n?this._children[this._children.length-1].value+=e.value:(e.parent=this,this._children.push(e)),this}replace(e,t){const{parent:i}=e,s=i.children.indexOf(e),o=i.children.slice(0);o.splice(s,1,...t),i._children=o,function e(t,i){for(const s of t)s.parent=i,e(s.children,s)}(t,i)}get children(){return this._children}get rightMostDescendant(){return this._children.length>0?this._children[this._children.length-1].rightMostDescendant:this}get snippet(){let e=this;while(1){if(!e)return;if(e instanceof g)return e;e=e.parent}}toString(){return this.children.reduce(((e,t)=>e+t.toString()),"")}len(){return 0}}class n extends o{constructor(e){super(),this.value=e}toString(){return this.value}len(){return this.value.length}clone(){return new n(this.value)}}class r extends o{}class a extends r{static compareByIndex(e,t){return e.index===t.index?0:e.isFinalTabstop?1:t.isFinalTabstop||e.indext.index?1:0}constructor(e){super(),this.index=e}get isFinalTabstop(){return 0===this.index}get choice(){return 1===this._children.length&&this._children[0]instanceof l?this._children[0]:void 0}clone(){const e=new a(this.index);return this.transform&&(e.transform=this.transform.clone()),e._children=this.children.map((e=>e.clone())),e}}class l extends o{constructor(){super(...arguments),this.options=[]}appendChild(e){return e instanceof n&&(e.parent=this,this.options.push(e)),this}toString(){return this.options[0].value}len(){return this.options[0].len()}clone(){const e=new l;return this.options.forEach(e.appendChild,e),e}}class d extends o{constructor(){super(...arguments),this.regexp=new RegExp("")}resolve(e){const t=this;let i=!1,s=e.replace(this.regexp,(function(){return i=!0,t._replace(Array.prototype.slice.call(arguments,0,-2))}));return!i&&this._children.some((e=>e instanceof c&&Boolean(e.elseValue)))&&(s=this._replace([])),s}_replace(e){let t="";for(const i of this._children)if(i instanceof c){let s=e[i.index]||"";s=i.resolve(s),t+=s}else t+=i.toString();return t}toString(){return""}clone(){const e=new d;return e.regexp=new RegExp(this.regexp.source,(this.regexp.ignoreCase?"i":"")+(this.regexp.global?"g":"")),e._children=this.children.map((e=>e.clone())),e}}class c extends o{constructor(e,t,i,s){super(),this.index=e,this.shorthandName=t,this.ifValue=i,this.elseValue=s}resolve(e){return"upcase"===this.shorthandName?e?e.toLocaleUpperCase():"":"downcase"===this.shorthandName?e?e.toLocaleLowerCase():"":"capitalize"===this.shorthandName?e?e[0].toLocaleUpperCase()+e.substr(1):"":"pascalcase"===this.shorthandName?e?this._toPascalCase(e):"":"camelcase"===this.shorthandName?e?this._toCamelCase(e):"":Boolean(e)&&"string"===typeof this.ifValue?this.ifValue:Boolean(e)||"string"!==typeof this.elseValue?e||"":this.elseValue}_toPascalCase(e){const t=e.match(/[a-z0-9]+/gi);return t?t.map((e=>e.charAt(0).toUpperCase()+e.substr(1))).join(""):e}_toCamelCase(e){const t=e.match(/[a-z0-9]+/gi);return t?t.map(((e,t)=>0===t?e.charAt(0).toLowerCase()+e.substr(1):e.charAt(0).toUpperCase()+e.substr(1))).join(""):e}clone(){const e=new c(this.index,this.shorthandName,this.ifValue,this.elseValue);return e}}class h extends r{constructor(e){super(),this.name=e}resolve(e){let t=e.resolve(this);return this.transform&&(t=this.transform.resolve(t||"")),void 0!==t&&(this._children=[new n(t)],!0)}clone(){const e=new h(this.name);return this.transform&&(e.transform=this.transform.clone()),e._children=this.children.map((e=>e.clone())),e}}function u(e,t){const i=[...e];while(i.length>0){const e=i.shift(),s=t(e);if(!s)break;i.unshift(...e.children)}}class g extends o{get placeholderInfo(){if(!this._placeholders){const e=[];let t;this.walk((function(i){return i instanceof a&&(e.push(i),t=!t||t.indexs===e?(i=!0,!1):(t+=s.len(),!0))),i?t:-1}fullLen(e){let t=0;return u([e],(e=>(t+=e.len(),!0))),t}enclosingPlaceholders(e){const t=[];let{parent:i}=e;while(i)i instanceof a&&t.push(i),i=i.parent;return t}resolveVariables(e){return this.walk((t=>(t instanceof h&&t.resolve(e)&&(this._placeholders=void 0),!0))),this}appendChild(e){return this._placeholders=void 0,super.appendChild(e)}replace(e,t){return this._placeholders=void 0,super.replace(e,t)}clone(){const e=new g;return this._children=this.children.map((e=>e.clone())),e}walk(e){u(this.children,e)}}class p{constructor(){this._scanner=new s,this._token={type:14,pos:0,len:0}}static escape(e){return e.replace(/\$|}|\\/g,"\\$&")}static guessNeedsClipboard(e){return/\${?CLIPBOARD/.test(e)}parse(e,t,i){const s=new g;return this.parseFragment(e,s),this.ensureFinalTabstop(s,null!==i&&void 0!==i&&i,null!==t&&void 0!==t&&t),s}parseFragment(e,t){const i=t.children.length;this._scanner.text(e),this._token=this._scanner.next();while(this._parse(t));const s=new Map,o=[];t.walk((e=>(e instanceof a&&(e.isFinalTabstop?s.set(0,void 0):!s.has(e.index)&&e.children.length>0?s.set(e.index,e.children):o.push(e)),!0)));const n=(e,i)=>{const o=s.get(e.index);if(!o)return;const r=new a(e.index);r.transform=e.transform;for(const t of o){const e=t.clone();r.appendChild(e),e instanceof a&&s.has(e.index)&&!i.has(e.index)&&(i.add(e.index),n(e,i),i.delete(e.index))}t.replace(e,[r])},r=new Set;for(const a of o)n(a,r);return t.children.slice(i)}ensureFinalTabstop(e,t,i){if(t||i&&e.placeholders.length>0){const t=e.placeholders.find((e=>0===e.index));t||e.appendChild(new a(0))}}_accept(e,t){if(void 0===e||this._token.type===e){const e=!t||this._scanner.tokenText(this._token);return this._token=this._scanner.next(),e}return!1}_backTo(e){return this._scanner.pos=e.pos+e.len,this._token=e,!1}_until(e){const t=this._token;while(this._token.type!==e){if(14===this._token.type)return!1;if(5===this._token.type){const e=this._scanner.next();if(0!==e.type&&4!==e.type&&5!==e.type)return!1}this._token=this._scanner.next()}const i=this._scanner.value.substring(t.pos,this._token.pos).replace(/\\(\$|}|\\)/g,"$1");return this._token=this._scanner.next(),i}_parse(e){return this._parseEscaped(e)||this._parseTabstopOrVariableName(e)||this._parseComplexPlaceholder(e)||this._parseComplexVariable(e)||this._parseAnything(e)}_parseEscaped(e){let t;return!!(t=this._accept(5,!0))&&(t=this._accept(0,!0)||this._accept(4,!0)||this._accept(5,!0)||t,e.appendChild(new n(t)),!0)}_parseTabstopOrVariableName(e){let t;const i=this._token,s=this._accept(0)&&(t=this._accept(9,!0)||this._accept(8,!0));return s?(e.appendChild(/^\d+$/.test(t)?new a(Number(t)):new h(t)),!0):this._backTo(i)}_parseComplexPlaceholder(e){let t;const i=this._token,s=this._accept(0)&&this._accept(3)&&(t=this._accept(8,!0));if(!s)return this._backTo(i);const o=new a(Number(t));if(this._accept(1))while(1){if(this._accept(4))return e.appendChild(o),!0;if(!this._parse(o))return e.appendChild(new n("${"+t+":")),o.children.forEach(e.appendChild,e),!0}else{if(!(o.index>0&&this._accept(7)))return this._accept(6)?this._parseTransform(o)?(e.appendChild(o),!0):(this._backTo(i),!1):this._accept(4)?(e.appendChild(o),!0):this._backTo(i);{const t=new l;while(1){if(this._parseChoiceElement(t)){if(this._accept(2))continue;if(this._accept(7)&&(o.appendChild(t),this._accept(4)))return e.appendChild(o),!0}return this._backTo(i),!1}}}}_parseChoiceElement(e){const t=this._token,i=[];while(1){if(2===this._token.type||7===this._token.type)break;let e;if(e=(e=this._accept(5,!0))?this._accept(2,!0)||this._accept(7,!0)||this._accept(5,!0)||e:this._accept(void 0,!0),!e)return this._backTo(t),!1;i.push(e)}return 0===i.length?(this._backTo(t),!1):(e.appendChild(new n(i.join(""))),!0)}_parseComplexVariable(e){let t;const i=this._token,s=this._accept(0)&&this._accept(3)&&(t=this._accept(9,!0));if(!s)return this._backTo(i);const o=new h(t);if(!this._accept(1))return this._accept(6)?this._parseTransform(o)?(e.appendChild(o),!0):(this._backTo(i),!1):this._accept(4)?(e.appendChild(o),!0):this._backTo(i);while(1){if(this._accept(4))return e.appendChild(o),!0;if(!this._parse(o))return e.appendChild(new n("${"+t+":")),o.children.forEach(e.appendChild,e),!0}}_parseTransform(e){const t=new d;let i="",s="";while(1){if(this._accept(6))break;let e;if(e=this._accept(5,!0))e=this._accept(6,!0)||e,i+=e;else{if(14===this._token.type)return!1;i+=this._accept(void 0,!0)}}while(1){if(this._accept(6))break;let e;if(e=this._accept(5,!0))e=this._accept(5,!0)||this._accept(6,!0)||e,t.appendChild(new n(e));else if(!this._parseFormatString(t)&&!this._parseAnything(t))return!1}while(1){if(this._accept(4))break;if(14===this._token.type)return!1;s+=this._accept(void 0,!0)}try{t.regexp=new RegExp(i,s)}catch(o){return!1}return e.transform=t,!0}_parseFormatString(e){const t=this._token;if(!this._accept(0))return!1;let i=!1;this._accept(3)&&(i=!0);const s=this._accept(8,!0);if(!s)return this._backTo(t),!1;if(!i)return e.appendChild(new c(Number(s))),!0;if(this._accept(4))return e.appendChild(new c(Number(s))),!0;if(!this._accept(1))return this._backTo(t),!1;if(this._accept(6)){const i=this._accept(9,!0);return i&&this._accept(4)?(e.appendChild(new c(Number(s),i)),!0):(this._backTo(t),!1)}if(this._accept(11)){const t=this._until(4);if(t)return e.appendChild(new c(Number(s),void 0,t,void 0)),!0}else if(this._accept(12)){const t=this._until(4);if(t)return e.appendChild(new c(Number(s),void 0,void 0,t)),!0}else if(this._accept(13)){const t=this._until(1);if(t){const i=this._until(4);if(i)return e.appendChild(new c(Number(s),void 0,t,i)),!0}}else{const t=this._until(4);if(t)return e.appendChild(new c(Number(s),void 0,void 0,t)),!0}return this._backTo(t),!1}_parseAnything(e){return 14!==this._token.type&&(e.appendChild(new n(this._scanner.tokenText(this._token))),this._accept(void 0),!0)}}},69377:(e,t,i)=>{i.d(t,{l:()=>E});var s=i(21921),o=i(70959),n=i(61720),r=i(90970),a=i(33162),l=i(54644),d=i(97297),c=i(16375),h=i(51549),u=i(15086),g=i(43124),p=i(22854),_=i(92286),m=i(21230),f=i(7091),v=i(25206),b=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},S=function(e,t){return function(i,s){t(i,s,e)}};Object.freeze({CURRENT_YEAR:!0,CURRENT_YEAR_SHORT:!0,CURRENT_MONTH:!0,CURRENT_DATE:!0,CURRENT_HOUR:!0,CURRENT_MINUTE:!0,CURRENT_SECOND:!0,CURRENT_DAY_NAME:!0,CURRENT_DAY_NAME_SHORT:!0,CURRENT_MONTH_NAME:!0,CURRENT_MONTH_NAME_SHORT:!0,CURRENT_SECONDS_UNIX:!0,CURRENT_TIMEZONE_OFFSET:!0,SELECTION:!0,CLIPBOARD:!0,TM_SELECTED_TEXT:!0,TM_CURRENT_LINE:!0,TM_CURRENT_WORD:!0,TM_LINE_INDEX:!0,TM_LINE_NUMBER:!0,TM_FILENAME:!0,TM_FILENAME_BASE:!0,TM_DIRECTORY:!0,TM_FILEPATH:!0,CURSOR_INDEX:!0,CURSOR_NUMBER:!0,RELATIVE_FILEPATH:!0,BLOCK_COMMENT_START:!0,BLOCK_COMMENT_END:!0,LINE_COMMENT:!0,WORKSPACE_NAME:!0,WORKSPACE_FOLDER:!0,RANDOM:!0,RANDOM_HEX:!0,UUID:!0});class y{constructor(e){this._delegates=e}resolve(e){for(const t of this._delegates){const i=t.resolve(e);if(void 0!==i)return i}}}class C{constructor(e,t,i,s){this._model=e,this._selection=t,this._selectionIdx=i,this._overtypingCapturer=s}resolve(e){const{name:t}=e;if("SELECTION"===t||"TM_SELECTED_TEXT"===t){let t=this._model.getValueInRange(this._selection)||void 0,i=this._selection.startLineNumber!==this._selection.endLineNumber;if(!t&&this._overtypingCapturer){const e=this._overtypingCapturer.getLastOvertypedInfo(this._selectionIdx);e&&(t=e.value,i=e.multiline)}if(t&&i&&e.snippet){const i=this._model.getLineContent(this._selection.startLineNumber),s=(0,n.V8)(i,0,this._selection.startColumn-1);let o=s;e.snippet.walk((t=>t!==e&&(t instanceof g.xv&&(o=(0,n.V8)((0,n.uq)(t.value).pop())),!0)));const r=(0,n.Mh)(o,s);t=t.replace(/(\r\n|\r|\n)(.*)/g,((e,t,i)=>`${t}${o.substr(r)}${i}`))}return t}if("TM_CURRENT_LINE"===t)return this._model.getLineContent(this._selection.positionLineNumber);if("TM_CURRENT_WORD"===t){const e=this._model.getWordAtPosition({lineNumber:this._selection.positionLineNumber,column:this._selection.positionColumn});return e&&e.word||void 0}return"TM_LINE_INDEX"===t?String(this._selection.positionLineNumber-1):"TM_LINE_NUMBER"===t?String(this._selection.positionLineNumber):"CURSOR_INDEX"===t?String(this._selectionIdx):"CURSOR_NUMBER"===t?String(this._selectionIdx+1):void 0}}class w{constructor(e,t){this._labelService=e,this._model=t}resolve(e){const{name:t}=e;if("TM_FILENAME"===t)return _.EZ(this._model.uri.fsPath);if("TM_FILENAME_BASE"===t){const e=_.EZ(this._model.uri.fsPath),t=e.lastIndexOf(".");return t<=0?e:e.slice(0,t)}return"TM_DIRECTORY"===t?"."===_.XX(this._model.uri.fsPath)?"":this._labelService.getUriLabel((0,m.XX)(this._model.uri)):"TM_FILEPATH"===t?this._labelService.getUriLabel(this._model.uri):"RELATIVE_FILEPATH"===t?this._labelService.getUriLabel(this._model.uri,{relative:!0,noPrefix:!0}):void 0}}class k{constructor(e,t,i,s){this._readClipboardText=e,this._selectionIdx=t,this._selectionCount=i,this._spread=s}resolve(e){if("CLIPBOARD"!==e.name)return;const t=this._readClipboardText();if(t){if(this._spread){const e=t.split(/\r\n|\n|\r/).filter((e=>!(0,n.m5)(e)));if(e.length===this._selectionCount)return e[this._selectionIdx]}return t}}}let D=class{constructor(e,t,i){this._model=e,this._selection=t,this._languageConfigurationService=i}resolve(e){const{name:t}=e,i=this._model.getLanguageIdAtPosition(this._selection.selectionStartLineNumber,this._selection.selectionStartColumn),s=this._languageConfigurationService.getLanguageConfiguration(i).comments;if(s)return"LINE_COMMENT"===t?s.lineCommentToken||void 0:"BLOCK_COMMENT_START"===t?s.blockCommentStartToken||void 0:"BLOCK_COMMENT_END"===t&&s.blockCommentEndToken||void 0}};D=b([S(2,d.c_)],D);class x{constructor(){this._date=new Date}resolve(e){const{name:t}=e;if("CURRENT_YEAR"===t)return String(this._date.getFullYear());if("CURRENT_YEAR_SHORT"===t)return String(this._date.getFullYear()).slice(-2);if("CURRENT_MONTH"===t)return String(this._date.getMonth().valueOf()+1).padStart(2,"0");if("CURRENT_DATE"===t)return String(this._date.getDate().valueOf()).padStart(2,"0");if("CURRENT_HOUR"===t)return String(this._date.getHours().valueOf()).padStart(2,"0");if("CURRENT_MINUTE"===t)return String(this._date.getMinutes().valueOf()).padStart(2,"0");if("CURRENT_SECOND"===t)return String(this._date.getSeconds().valueOf()).padStart(2,"0");if("CURRENT_DAY_NAME"===t)return x.dayNames[this._date.getDay()];if("CURRENT_DAY_NAME_SHORT"===t)return x.dayNamesShort[this._date.getDay()];if("CURRENT_MONTH_NAME"===t)return x.monthNames[this._date.getMonth()];if("CURRENT_MONTH_NAME_SHORT"===t)return x.monthNamesShort[this._date.getMonth()];if("CURRENT_SECONDS_UNIX"===t)return String(Math.floor(this._date.getTime()/1e3));if("CURRENT_TIMEZONE_OFFSET"===t){const e=this._date.getTimezoneOffset(),t=e>0?"-":"+",i=Math.trunc(Math.abs(e/60)),s=i<10?"0"+i:i,o=Math.abs(e)-60*i,n=o<10?"0"+o:o;return t+s+":"+n}}}x.dayNames=[v.NC("Sunday","Sunday"),v.NC("Monday","Monday"),v.NC("Tuesday","Tuesday"),v.NC("Wednesday","Wednesday"),v.NC("Thursday","Thursday"),v.NC("Friday","Friday"),v.NC("Saturday","Saturday")],x.dayNamesShort=[v.NC("SundayShort","Sun"),v.NC("MondayShort","Mon"),v.NC("TuesdayShort","Tue"),v.NC("WednesdayShort","Wed"),v.NC("ThursdayShort","Thu"),v.NC("FridayShort","Fri"),v.NC("SaturdayShort","Sat")],x.monthNames=[v.NC("January","January"),v.NC("February","February"),v.NC("March","March"),v.NC("April","April"),v.NC("May","May"),v.NC("June","June"),v.NC("July","July"),v.NC("August","August"),v.NC("September","September"),v.NC("October","October"),v.NC("November","November"),v.NC("December","December")],x.monthNamesShort=[v.NC("JanuaryShort","Jan"),v.NC("FebruaryShort","Feb"),v.NC("MarchShort","Mar"),v.NC("AprilShort","Apr"),v.NC("MayShort","May"),v.NC("JuneShort","Jun"),v.NC("JulyShort","Jul"),v.NC("AugustShort","Aug"),v.NC("SeptemberShort","Sep"),v.NC("OctoberShort","Oct"),v.NC("NovemberShort","Nov"),v.NC("DecemberShort","Dec")];class N{constructor(e){this._workspaceService=e}resolve(e){if(!this._workspaceService)return;const t=(0,u.uT)(this._workspaceService.getWorkspace());return(0,u.c$)(t)?void 0:"WORKSPACE_NAME"===e.name?this._resolveWorkspaceName(t):"WORKSPACE_FOLDER"===e.name?this._resoveWorkspacePath(t):void 0}_resolveWorkspaceName(e){if((0,u.eb)(e))return _.EZ(e.uri.path);let t=_.EZ(e.configPath.path);return t.endsWith(u.A6)&&(t=t.substr(0,t.length-u.A6.length-1)),t}_resoveWorkspacePath(e){if((0,u.eb)(e))return(0,p.D)(e.uri.fsPath);const t=_.EZ(e.configPath.path);let i=e.configPath.fsPath;return i.endsWith(t)&&(i=i.substr(0,i.length-t.length-1)),i?(0,p.D)(i):"/"}}class T{resolve(e){const{name:t}=e;return"RANDOM"===t?Math.random().toString().slice(-6):"RANDOM_HEX"===t?Math.random().toString(16).slice(-6):"UUID"===t?(0,f.R)():void 0}}var I=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},L=function(e,t){return function(i,s){t(i,s,e)}};class R{constructor(e,t,i){this._editor=e,this._snippet=t,this._snippetLineLeadingWhitespace=i,this._offset=-1,this._nestingLevel=1,this._placeholderGroups=(0,s.vM)(t.placeholders,g.Vm.compareByIndex),this._placeholderGroupsIdx=-1}initialize(e){this._offset=e.newPosition}dispose(){this._placeholderDecorations&&this._editor.removeDecorations([...this._placeholderDecorations.values()]),this._placeholderGroups.length=0}_initDecorations(){if(-1===this._offset)throw new Error("Snippet not initialized!");if(this._placeholderDecorations)return;this._placeholderDecorations=new Map;const e=this._editor.getModel();this._editor.changeDecorations((t=>{for(const i of this._snippet.placeholders){const s=this._snippet.offset(i),o=this._snippet.fullLen(i),n=a.e.fromPositions(e.getPositionAt(this._offset+s),e.getPositionAt(this._offset+s+o)),r=i.isFinalTabstop?R._decor.inactiveFinal:R._decor.inactive,l=t.addDecoration(n,r);this._placeholderDecorations.set(i,l)}}))}move(e){if(!this._editor.hasModel())return[];if(this._initDecorations(),this._placeholderGroupsIdx>=0){const e=[];for(const t of this._placeholderGroups[this._placeholderGroupsIdx])if(t.transform){const i=this._placeholderDecorations.get(t),s=this._editor.getModel().getDecorationRange(i),o=this._editor.getModel().getValueInRange(s),n=t.transform.resolve(o).split(/\r\n|\r|\n/);for(let e=1;e0&&this._editor.executeEdits("snippet.placeholderTransform",e)}let t=!1;!0===e&&this._placeholderGroupsIdx0&&(this._placeholderGroupsIdx-=1,t=!0);const i=this._editor.getModel().changeDecorations((e=>{const i=new Set,s=[];for(const o of this._placeholderGroups[this._placeholderGroupsIdx]){const n=this._placeholderDecorations.get(o),r=this._editor.getModel().getDecorationRange(n);s.push(new l.Y(r.startLineNumber,r.startColumn,r.endLineNumber,r.endColumn)),t=t&&this._hasPlaceholderBeenCollapsed(o),e.changeDecorationOptions(n,o.isFinalTabstop?R._decor.activeFinal:R._decor.active),i.add(o);for(const t of this._snippet.enclosingPlaceholders(o)){const s=this._placeholderDecorations.get(t);e.changeDecorationOptions(s,t.isFinalTabstop?R._decor.activeFinal:R._decor.active),i.add(t)}}for(const[t,o]of this._placeholderDecorations)i.has(t)||e.changeDecorationOptions(o,t.isFinalTabstop?R._decor.inactiveFinal:R._decor.inactive);return s}));return t?this.move(e):null!==i&&void 0!==i?i:[]}_hasPlaceholderBeenCollapsed(e){let t=e;while(t){if(t instanceof g.Vm){const e=this._placeholderDecorations.get(t),i=this._editor.getModel().getDecorationRange(e);if(i.isEmpty()&&t.toString().length>0)return!0}t=t.parent}return!1}get isAtFirstPlaceholder(){return this._placeholderGroupsIdx<=0||0===this._placeholderGroups.length}get isAtLastPlaceholder(){return this._placeholderGroupsIdx===this._placeholderGroups.length-1}get hasPlaceholder(){return this._snippet.placeholders.length>0}get isTrivialSnippet(){if(0===this._snippet.placeholders.length)return!0;if(1===this._snippet.placeholders.length){const[e]=this._snippet.placeholders;if(e.isFinalTabstop&&this._snippet.rightMostDescendant===e)return!0}return!1}computePossibleSelections(){const e=new Map;for(const t of this._placeholderGroups){let i;for(const s of t){if(s.isFinalTabstop)break;i||(i=[],e.set(s.index,i));const t=this._placeholderDecorations.get(s),o=this._editor.getModel().getDecorationRange(t);if(!o){e.delete(s.index);break}i.push(o)}}return e}get activeChoice(){if(!this._placeholderDecorations)return;const e=this._placeholderGroups[this._placeholderGroupsIdx][0];if(!(null===e||void 0===e?void 0:e.choice))return;const t=this._placeholderDecorations.get(e);if(!t)return;const i=this._editor.getModel().getDecorationRange(t);return i?{range:i,choice:e.choice}:void 0}get hasChoice(){let e=!1;return this._snippet.walk((t=>(e=t instanceof g.Lv,!e))),e}merge(e){const t=this._editor.getModel();this._nestingLevel*=10,this._editor.changeDecorations((i=>{for(const s of this._placeholderGroups[this._placeholderGroupsIdx]){const o=e.shift();console.assert(-1!==o._offset),console.assert(!o._placeholderDecorations);const n=o._snippet.placeholderInfo.last.index;for(const e of o._snippet.placeholderInfo.all)e.isFinalTabstop?e.index=s.index+(n+1)/this._nestingLevel:e.index=s.index+e.index/this._nestingLevel;this._snippet.replace(s,o._snippet.children);const r=this._placeholderDecorations.get(s);i.removeDecoration(r),this._placeholderDecorations.delete(s);for(const e of o._snippet.placeholders){const s=o._snippet.offset(e),n=o._snippet.fullLen(e),r=a.e.fromPositions(t.getPositionAt(o._offset+s),t.getPositionAt(o._offset+s+n)),l=i.addDecoration(r,R._decor.inactive);this._placeholderDecorations.set(e,l)}}this._placeholderGroups=(0,s.vM)(this._snippet.placeholders,g.Vm.compareByIndex)}))}}R._decor={active:c.qx.register({description:"snippet-placeholder-1",stickiness:0,className:"snippet-placeholder"}),inactive:c.qx.register({description:"snippet-placeholder-2",stickiness:1,className:"snippet-placeholder"}),activeFinal:c.qx.register({description:"snippet-placeholder-3",stickiness:1,className:"finish-snippet-placeholder"}),inactiveFinal:c.qx.register({description:"snippet-placeholder-4",stickiness:1,className:"finish-snippet-placeholder"})};const P={overwriteBefore:0,overwriteAfter:0,adjustWhitespace:!0,clipboardText:void 0,overtypingCapturer:void 0};let E=class e{static adjustWhitespace(e,t,i,s,o){const r=e.getLineContent(t.lineNumber),a=(0,n.V8)(r,0,t.column-1);let l;return s.walk((t=>{if(!(t instanceof g.xv)||t.parent instanceof g.Lv)return!0;if(o&&!o.has(t))return!0;const n=t.value.split(/\r\n|\r|\n/);if(i){const i=s.offset(t);if(0===i)n[0]=e.normalizeIndentation(n[0]);else{l=null!==l&&void 0!==l?l:s.toString();const t=l.charCodeAt(i-1);10!==t&&13!==t||(n[0]=e.normalizeIndentation(a+n[0]))}for(let t=1;te.get(u.ec))),b=t.invokeWithinContext((e=>new w(e.get(h.e),f))),S=()=>d,I=f.getValueInRange(e.adjustSelection(f,t.getSelection(),s,0)),L=f.getValueInRange(e.adjustSelection(f,t.getSelection(),0,o)),P=f.getLineFirstNonWhitespaceColumn(t.getSelection().positionLineNumber),E=t.getSelections().map(((e,t)=>({selection:e,idx:t}))).sort(((e,t)=>a.e.compareRangesUsingStarts(e.selection,t.selection)));for(const{selection:a,idx:h}of E){let d=e.adjustSelection(f,a,s,0),u=e.adjustSelection(f,a,0,o);I!==f.getValueInRange(d)&&(d=a),L!==f.getValueInRange(u)&&(u=a);const w=a.setStartPosition(d.startLineNumber,d.startColumn).setEndPosition(u.endLineNumber,u.endColumn),M=(new g.Yj).parse(i,!0,n),O=w.getStartPosition(),F=e.adjustWhitespace(f,O,l||h>0&&P!==f.getLineFirstNonWhitespaceColumn(a.positionLineNumber),M);M.resolveVariables(new y([b,new k(S,h,E.length,"spread"===t.getOption(77)),new C(f,a,h,c),new D(f,a,p),new x,new N(v),new T])),_[h]=r.h.replace(w,M.toString()),_[h].identifier={major:h,minor:0},_[h]._isTracked=!0,m[h]=new R(t,M,F)}return{edits:_,snippets:m}}static createEditsAndSnippetsFromEdits(t,i,s,o,n,l,d){if(!t.hasModel()||0===i.length)return{edits:[],snippets:[]};const c=[],p=t.getModel(),_=new g.Yj,m=new g.y1,f=new y([t.invokeWithinContext((e=>new w(e.get(h.e),p))),new k((()=>n),0,t.getSelections().length,"spread"===t.getOption(77)),new C(p,t.getSelection(),0,l),new D(p,t.getSelection(),d),new x,new N(t.invokeWithinContext((e=>e.get(u.ec)))),new T]);i=i.sort(((e,t)=>a.e.compareRangesUsingStarts(e.range,t.range)));let v=0;for(let h=0;h0){const e=i[h-1].range,s=a.e.fromPositions(e.getEndPosition(),t.getStartPosition()),o=new g.xv(p.getValueInRange(s));m.appendChild(o),v+=o.value.length}const o=_.parseFragment(s,m);e.adjustWhitespace(p,t.getStartPosition(),!0,m,new Set(o)),m.resolveVariables(f);const n=m.toString(),l=n.slice(v);v=n.length;const d=r.h.replace(t,l);d.identifier={major:h,minor:0},d._isTracked=!0,c.push(d)}return _.ensureFinalTabstop(m,s,!0),{edits:c,snippets:[new R(t,m,"")]}}constructor(e,t,i=P,s){this._editor=e,this._template=t,this._options=i,this._languageConfigurationService=s,this._templateMerges=[],this._snippets=[]}dispose(){(0,o.B9)(this._snippets)}_logInfo(){return`template="${this._template}", merged_templates="${this._templateMerges.join(" -> ")}"`}insert(){if(!this._editor.hasModel())return;const{edits:t,snippets:i}="string"===typeof this._template?e.createEditsAndSnippetsFromSelections(this._editor,this._template,this._options.overwriteBefore,this._options.overwriteAfter,!1,this._options.adjustWhitespace,this._options.clipboardText,this._options.overtypingCapturer,this._languageConfigurationService):e.createEditsAndSnippetsFromEdits(this._editor,this._template,!1,this._options.adjustWhitespace,this._options.clipboardText,this._options.overtypingCapturer,this._languageConfigurationService);this._snippets=i,this._editor.executeEdits("snippet",t,(e=>{const t=e.filter((e=>!!e.identifier));for(let s=0;sl.Y.fromPositions(e.range.getEndPosition())))})),this._editor.revealRange(this._editor.getSelections()[0])}merge(t,i=P){if(!this._editor.hasModel())return;this._templateMerges.push([this._snippets[0]._nestingLevel,this._snippets[0]._placeholderGroupsIdx,t]);const{edits:s,snippets:o}=e.createEditsAndSnippetsFromSelections(this._editor,t,i.overwriteBefore,i.overwriteAfter,!0,i.adjustWhitespace,i.clipboardText,i.overtypingCapturer,this._languageConfigurationService);this._editor.executeEdits("snippet",s,(e=>{const t=e.filter((e=>!!e.identifier));for(let s=0;sl.Y.fromPositions(e.range.getEndPosition())))}))}next(){const e=this._move(!0);this._editor.setSelections(e),this._editor.revealPositionInCenterIfOutsideViewport(e[0].getPosition())}prev(){const e=this._move(!1);this._editor.setSelections(e),this._editor.revealPositionInCenterIfOutsideViewport(e[0].getPosition())}_move(e){const t=[];for(const i of this._snippets){const s=i.move(e);t.push(...s)}return t}get isAtFirstPlaceholder(){return this._snippets[0].isAtFirstPlaceholder}get isAtLastPlaceholder(){return this._snippets[0].isAtLastPlaceholder}get hasPlaceholder(){return this._snippets[0].hasPlaceholder}get hasChoice(){return this._snippets[0].hasChoice}get activeChoice(){return this._snippets[0].activeChoice}isSelectionWithinPlaceholders(){if(!this.hasPlaceholder)return!1;const e=this._editor.getSelections();if(e.length{e.push(...s.get(t))}))}e.sort(a.e.compareRangesUsingStarts);for(const[i,s]of t)if(s.length===e.length){s.sort(a.e.compareRangesUsingStarts);for(let o=0;o0}};E=I([L(3,d.c_)],E)},43239:(e,t,i)=>{var s=i(48077),o=i(25206),n=i(45940),r=i(82693),a=i(47596),l=i(37174),d=i(44950),c=i(70959),h=i(16458),u=i(2548),g=i(75467),p=i(82168),_=i(24788),m=i(89999),f=i(69427),v=i(56998),b=i(93489);class S{constructor(e,t){this.lineNumbers=e,this.lastLineRelativePosition=t}}const y=(0,p.Z)("stickyScrollViewLayer",{createHTML:e=>e});class C extends c.JT{constructor(e){super(),this._editor=e,this._rootDomNode=document.createElement("div"),this._disposableStore=this._register(new c.SL),this._lineNumbers=[],this._lastLineRelativePosition=0,this._hoverOnLine=-1,this._hoverOnColumn=-1,this._layoutInfo=this._editor.getLayoutInfo(),this._rootDomNode=document.createElement("div"),this._rootDomNode.className="sticky-widget",this._rootDomNode.classList.toggle("peek",e instanceof _.H),this._rootDomNode.style.width=this._layoutInfo.width-this._layoutInfo.minimap.minimapCanvasOuterWidth-this._layoutInfo.verticalScrollbarWidth+"px"}get hoverOnLine(){return this._hoverOnLine}get hoverOnColumn(){return this._hoverOnColumn}get lineNumbers(){return this._lineNumbers}getCurrentLines(){return this._lineNumbers}setState(e){u.PO(this._rootDomNode),this._disposableStore.clear(),this._lineNumbers.length=0;const t=this._editor.getOption(65),i=e.lineNumbers.length*t+e.lastLineRelativePosition;i>0?(this._lastLineRelativePosition=e.lastLineRelativePosition,this._lineNumbers=e.lineNumbers):(this._lastLineRelativePosition=0,this._lineNumbers=[]),this._renderRootNode()}_renderRootNode(){if(!this._editor._getViewModel())return;for(const[s,o]of this._lineNumbers.entries()){const e=this._renderChildNode(s,o);this._rootDomNode.appendChild(e)}const e=this._editor.getOption(65),t=this._lineNumbers.length*e+this._lastLineRelativePosition;this._rootDomNode.style.display=t>0?"block":"none",this._rootDomNode.style.height=t.toString()+"px",this._rootDomNode.setAttribute("role","list");const i=this._editor.getOption(71).side;"left"===i&&(this._rootDomNode.style.marginLeft=this._editor.getLayoutInfo().minimap.minimapCanvasOuterWidth+"px")}_renderChildNode(e,t){const i=document.createElement("div"),s=this._editor._getViewModel(),o=s.coordinatesConverter.convertModelPositionToViewPosition(new m.L(t,1)).lineNumber,n=s.getViewLineRenderingData(o),r=this._editor.getLayoutInfo(),a=r.width-r.minimap.minimapCanvasOuterWidth-r.verticalScrollbarWidth,l=this._editor.getOption(71).side,d=this._editor.getOption(65),c=this._editor.getOption(66);let h;try{h=v.Kp.filter(n.inlineDecorations,o,n.minColumn,n.maxColumn)}catch(D){h=[]}const p=new b.IJ(!0,!0,n.content,n.continuesWithWrappedLine,n.isBasicASCII,n.containsRTL,0,n.tokens,h,n.tabSize,n.startVisibleColumn,1,1,1,500,"none",!0,!0,null),_=new f.HT(2e3);let S;(0,b.d1)(p,_),S=y?y.createHTML(_.build()):_.build();const C=document.createElement("span");C.className="sticky-line",C.classList.add(`stickyLine${t}`),C.style.lineHeight=`${d}px`,C.innerHTML=S;const w=document.createElement("span");w.className="sticky-line",w.style.lineHeight=`${d}px`,"left"===l?w.style.width=r.contentLeft-r.minimap.minimapCanvasOuterWidth+"px":"right"===l&&(w.style.width=`${r.contentLeft}px`);const k=document.createElement("span");return 1===c.renderType||3===c.renderType&&t%10===0?k.innerText=t.toString():2===c.renderType&&(k.innerText=Math.abs(t-this._editor.getPosition().lineNumber).toString()),k.className="sticky-line-number",k.style.lineHeight=`${d}px`,k.style.width=`${r.lineNumbersWidth}px`,"left"===l?k.style.paddingLeft=r.lineNumbersLeft-r.minimap.minimapCanvasOuterWidth+"px":"right"===l&&(k.style.paddingLeft=`${r.lineNumbersLeft}px`),w.appendChild(k),this._editor.applyFontInfo(C),this._editor.applyFontInfo(k),i.appendChild(w),i.appendChild(C),i.className="sticky-line-root",i.setAttribute("role","listitem"),i.tabIndex=0,i.style.lineHeight=`${d}px`,i.style.width=`${a}px`,i.style.height=`${d}px`,i.style.zIndex="0",e===this._lineNumbers.length-1&&(i.style.position="relative",i.style.zIndex="-1",i.style.top=this._lastLineRelativePosition+"px"),this._disposableStore.add(u.nm(i,"mouseover",(e=>{if(this._editor.hasModel()){const i=new g.n(e),s=i.target.innerText;this._hoverOnLine=t,this._hoverOnColumn=this._editor.getModel().getLineContent(t).indexOf(s)+1||-1}}))),i}getId(){return"editor.contrib.stickyScrollWidget"}getDomNode(){return this._rootDomNode}getPosition(){return{preference:null}}}var w=i(55191),k=i(85398),D=i(21921),x=i(21230),N=i(11271),T=i(97297),I=i(41649),L=i(16841),R=i(59203),P=i(63947),E=i(98642);class M{constructor(e,t){this.startLineNumber=e,this.endLineNumber=t}}class O{constructor(e,t,i){this.range=e,this.children=t,this.parent=i}}class F{constructor(e,t,i,s){this.uri=e,this.version=t,this.element=i,this.outlineProviderId=s}}var A,z,H=i(39595),W=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},V=function(e,t){return function(i,s){t(i,s,e)}},B=function(e,t,i,s){function o(e){return e instanceof i?e:new i((function(t){t(e)}))}return new(i||(i=Promise))((function(i,n){function r(e){try{l(s.next(e))}catch(t){n(t)}}function a(e){try{l(s["throw"](e))}catch(t){n(t)}}function l(e){e.done?i(e.value):o(e.value).then(r,a)}l((s=s.apply(e,t||[])).next())}))};(function(e){e["OUTLINE_MODEL"]="outlineModel",e["FOLDING_PROVIDER_MODEL"]="foldingProviderModel",e["INDENTATION_MODEL"]="indentationModel"})(A||(A={})),function(e){e[e["VALID"]=0]="VALID",e[e["INVALID"]=1]="INVALID",e[e["CANCELED"]=2]="CANCELED"}(z||(z={}));let G=class{constructor(e,t,i,s){this._editor=e,this._languageConfigurationService=t,this._languageFeaturesService=i,this._modelProviders=[],this._modelPromise=null,this._updateScheduler=new k.vp(300);const o=new $(i),n=new q(this._editor,i),r=new K(this._editor,t);switch(s){case A.OUTLINE_MODEL:this._modelProviders.push(o),this._modelProviders.push(n),this._modelProviders.push(r);break;case A.FOLDING_PROVIDER_MODEL:this._modelProviders.push(n),this._modelProviders.push(r);break;case A.INDENTATION_MODEL:this._modelProviders.push(r);break}this._store=new c.SL}_cancelModelPromise(){this._modelPromise&&(this._modelPromise.cancel(),this._modelPromise=null)}update(e,t,i){return B(this,void 0,void 0,(function*(){return this._store.clear(),this._store.add({dispose:()=>{var e;this._cancelModelPromise(),null===(e=this._updateScheduler)||void 0===e||e.cancel()}}),this._cancelModelPromise(),yield this._updateScheduler.trigger((()=>B(this,void 0,void 0,(function*(){for(const s of this._modelProviders){const{statusPromise:o,modelPromise:n}=s.computeStickyModel(e,t,i);this._modelPromise=n;const r=yield o;if(this._modelPromise!==n)return null;switch(r){case z.CANCELED:return this._store.clear(),null;case z.VALID:return s.stickyModel}}return null}))))}))}};G=W([V(1,T.c_),V(2,h.p)],G);class U{constructor(){this._stickyModel=null}get stickyModel(){return this._stickyModel}_invalid(){return this._stickyModel=null,z.INVALID}computeStickyModel(e,t,i){if(i.isCancellationRequested||!this.isProviderValid(e))return{statusPromise:this._invalid(),modelPromise:null};const s=(0,k.PG)((i=>this.createModelFromProvider(e,t,i)));return{statusPromise:s.then((s=>this.isModelValid(s)?i.isCancellationRequested?z.CANCELED:(this._stickyModel=this.createStickyModel(e,t,i,s),z.VALID):this._invalid())).then(void 0,(e=>((0,E.dL)(e),z.CANCELED))),modelPromise:s}}isModelValid(e){return!0}isProviderValid(e){return!0}}let $=class extends U{constructor(e){super(),this._languageFeaturesService=e}createModelFromProvider(e,t,i){return I.C3.create(this._languageFeaturesService.documentSymbolProvider,e,i)}createStickyModel(e,t,i,s){var o;const{stickyOutlineElement:n,providerID:r}=this._stickyModelFromOutlineModel(s,null===(o=this._stickyModel)||void 0===o?void 0:o.outlineProviderId);return new F(e.uri,t,n,r)}isModelValid(e){return e&&e.children.size>0}_stickyModelFromOutlineModel(e,t){let i;if(H.$.first(e.children.values())instanceof I.H3){const s=H.$.find(e.children.values(),(e=>e.id===t));if(s)i=s.children;else{let s,o="",n=-1;for(const[t,i]of e.children.entries()){const e=this._findSumOfRangesOfGroup(i);e>n&&(s=i,n=e,o=i.id)}t=o,i=s.children}}else i=e.children;const s=[],o=Array.from(i.values()).sort(((e,t)=>{const i=new M(e.symbol.range.startLineNumber,e.symbol.range.endLineNumber),s=new M(t.symbol.range.startLineNumber,t.symbol.range.endLineNumber);return this._comparator(i,s)}));for(const r of o)s.push(this._stickyModelFromOutlineElement(r,r.symbol.selectionRange.startLineNumber));const n=new O(void 0,s,void 0);return{stickyOutlineElement:n,providerID:t}}_stickyModelFromOutlineElement(e,t){const i=[];for(const o of e.children.values())if(o.symbol.selectionRange.startLineNumber!==o.symbol.range.endLineNumber)if(o.symbol.selectionRange.startLineNumber!==t)i.push(this._stickyModelFromOutlineElement(o,o.symbol.selectionRange.startLineNumber));else for(const e of o.children.values())i.push(this._stickyModelFromOutlineElement(e,o.symbol.selectionRange.startLineNumber));i.sort(((e,t)=>this._comparator(e.range,t.range)));const s=new M(e.symbol.selectionRange.startLineNumber,e.symbol.range.endLineNumber);return new O(s,i,void 0)}_comparator(e,t){return e.startLineNumber!==t.startLineNumber?e.startLineNumber-t.startLineNumber:t.endLineNumber-e.endLineNumber}_findSumOfRangesOfGroup(e){let t=0;for(const i of e.children.values())t+=this._findSumOfRangesOfGroup(i);return e instanceof I.sT?t+e.symbol.range.endLineNumber-e.symbol.selectionRange.startLineNumber:t}};$=W([V(0,h.p)],$);class j extends U{constructor(e){super(),this._foldingLimitReporter=new L.n(e)}createStickyModel(e,t,i,s){const o=this._fromFoldingRegions(s);return new F(e.uri,t,o,void 0)}isModelValid(e){return null!==e}_fromFoldingRegions(e){const t=e.length,i=[],s=new O(void 0,[],void 0);for(let o=0;o0}createModelFromProvider(e,t,i){const s=L.f.getFoldingRangeProviders(this._languageFeaturesService,e),o=new R.e(e,s,(()=>this.createModelFromProvider(e,t,i)),this._foldingLimitReporter,void 0);return o.compute(i)}};q=W([V(1,h.p)],q);var J=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},Y=function(e,t){return function(i,s){t(i,s,e)}},X=function(e,t,i,s){function o(e){return e instanceof i?e:new i((function(t){t(e)}))}return new(i||(i=Promise))((function(i,n){function r(e){try{l(s.next(e))}catch(t){n(t)}}function a(e){try{l(s["throw"](e))}catch(t){n(t)}}function l(e){e.done?i(e.value):o(e.value).then(r,a)}l((s=s.apply(e,t||[])).next())}))};class Q{constructor(e,t,i){this.startLineNumber=e,this.endLineNumber=t,this.nestingDepth=i}}let Z=class extends c.JT{constructor(e,t,i){super(),this._languageFeaturesService=t,this._languageConfigurationService=i,this._onDidChangeStickyScroll=this._store.add(new N.Q5),this.onDidChangeStickyScroll=this._onDidChangeStickyScroll.event,this._options=null,this._model=null,this._cts=null,this._stickyModelProvider=null,this._editor=e,this._sessionStore=new c.SL,this._updateSoon=this._register(new k.pY((()=>this.update()),50)),this._register(this._editor.onDidChangeConfiguration((e=>{e.hasChanged(113)&&this.readConfiguration()}))),this.readConfiguration()}dispose(){super.dispose(),this._sessionStore.dispose()}readConfiguration(){this._options=this._editor.getOption(113),this._options.enabled?(this._stickyModelProvider=new G(this._editor,this._languageConfigurationService,this._languageFeaturesService,this._options.defaultModel),this._sessionStore.add(this._editor.onDidChangeModel((()=>this.update()))),this._sessionStore.add(this._editor.onDidChangeHiddenAreas((()=>this.update()))),this._sessionStore.add(this._editor.onDidChangeModelContent((()=>this._updateSoon.schedule()))),this._sessionStore.add(this._languageFeaturesService.documentSymbolProvider.onDidChange((()=>this.update()))),this.update()):this._sessionStore.clear()}getVersionId(){var e;return null===(e=this._model)||void 0===e?void 0:e.version}update(){var e;return X(this,void 0,void 0,(function*(){null===(e=this._cts)||void 0===e||e.dispose(!0),this._cts=new w.A,yield this.updateStickyModel(this._cts.token),this._onDidChangeStickyScroll.fire()}))}updateStickyModel(e){return X(this,void 0,void 0,(function*(){if(!this._editor.hasModel()||!this._stickyModelProvider)return;const t=this._editor.getModel(),i=t.getVersionId(),s=!!this._model&&!(0,x.Xy)(this._model.uri,t.uri),o=s?setTimeout((()=>{e.isCancellationRequested||(this._model=new F(t.uri,t.getVersionId(),void 0,void 0),this._onDidChangeStickyScroll.fire())}),75):void 0;this._model=yield this._stickyModelProvider.update(t,i,e),clearTimeout(o)}))}updateIndex(e){return-1===e?e=0:e<0&&(e=-e-2),e}getCandidateStickyLinesIntersectingFromStickyModel(e,t,i,s,o){if(0===t.children.length)return;let n=o;const r=[];for(let d=0;de-t))),l=this.updateIndex((0,D.ry)(r,e.startLineNumber+s,((e,t)=>e-t)));for(let d=a;d<=l;d++){const r=t.children[d];if(!r)return;if(r.range){const t=r.range.startLineNumber,o=r.range.endLineNumber;e.startLineNumber<=o+1&&t-1<=e.endLineNumber&&t!==n&&(n=t,i.push(new Q(t,o-1,s+1)),this.getCandidateStickyLinesIntersectingFromStickyModel(e,r,i,s+1,t))}else this.getCandidateStickyLinesIntersectingFromStickyModel(e,r,i,s,o)}}getCandidateStickyLinesIntersecting(e){var t,i;if(!(null===(t=this._model)||void 0===t?void 0:t.element))return[];let s=[];this.getCandidateStickyLinesIntersectingFromStickyModel(e,this._model.element,s,0,-1);const o=null===(i=this._editor._getViewModel())||void 0===i?void 0:i.getHiddenAreas();if(o)for(const n of o)s=s.filter((e=>!(e.startLineNumber>=n.startLineNumber&&e.endLineNumber<=n.endLineNumber+1)));return s}};Z=J([Y(1,h.p),Y(2,T.c_)],Z);var ee=i(21881),te=i(93753),ie=i(28130),se=i(33162),oe=i(18815),ne=i(23507),re=i(54732),ae=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},le=function(e,t){return function(i,s){t(i,s,e)}},de=function(e,t,i,s){function o(e){return e instanceof i?e:new i((function(t){t(e)}))}return new(i||(i=Promise))((function(i,n){function r(e){try{l(s.next(e))}catch(t){n(t)}}function a(e){try{l(s["throw"](e))}catch(t){n(t)}}function l(e){e.done?i(e.value):o(e.value).then(r,a)}l((s=s.apply(e,t||[])).next())}))};let ce=class e extends c.JT{constructor(e,t,i,s,o,n,r){super(),this._editor=e,this._contextMenuService=t,this._languageFeaturesService=i,this._instaService=s,this._contextKeyService=r,this._sessionStore=new c.SL,this._maxStickyLines=Number.MAX_SAFE_INTEGER,this._candidateDefinitionsLength=-1,this._focusedStickyElementIndex=-1,this._enabled=!1,this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1,this._stickyScrollWidget=new C(this._editor),this._stickyLineCandidateProvider=new Z(this._editor,i,o),this._register(this._stickyScrollWidget),this._register(this._stickyLineCandidateProvider),this._widgetState=new S([],0),this._readConfiguration(),this._register(this._editor.onDidChangeConfiguration((e=>{e.hasChanged(113)&&this._readConfiguration()}))),this._register(u.nm(this._stickyScrollWidget.getDomNode(),u.tw.CONTEXT_MENU,(e=>de(this,void 0,void 0,(function*(){this._onContextMenu(e)}))))),this._stickyScrollFocusedContextKey=d.u.stickyScrollFocused.bindTo(this._contextKeyService),this._stickyScrollVisibleContextKey=d.u.stickyScrollVisible.bindTo(this._contextKeyService);const a=this._register(u.go(this._stickyScrollWidget.getDomNode()));this._register(a.onDidBlur((e=>{const t=this._stickyScrollWidget.getDomNode().clientHeight;!1===this._positionRevealed&&0===t?(this._focusedStickyElementIndex=-1,this.focus()):this._disposeFocusStickyScrollStore()}))),this._register(a.onDidFocus((e=>{this.focus()}))),this._register(this._createClickLinkGesture()),this._register(u.nm(this._stickyScrollWidget.getDomNode(),u.tw.MOUSE_DOWN,(e=>{this._onMouseDown=!0})))}static get(t){return t.getContribution(e.ID)}_disposeFocusStickyScrollStore(){var e;this._stickyScrollFocusedContextKey.set(!1),null===(e=this._focusDisposableStore)||void 0===e||e.dispose(),this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1}focus(){if(this._onMouseDown)return this._onMouseDown=!1,void this._editor.focus();const e=this._stickyScrollFocusedContextKey.get();if(!0===e)return;this._focused=!0,this._focusDisposableStore=new c.SL,this._stickyScrollFocusedContextKey.set(!0);const t=this._stickyScrollWidget.getDomNode();t.lastElementChild.focus(),this._stickyElements=t.children,this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumbers.length-1}focusNext(){this._focusedStickyElementIndex0&&this._focusNav(!1)}selectEditor(){this._editor.focus()}_focusNav(e){this._focusedStickyElementIndex=e?this._focusedStickyElementIndex+1:this._focusedStickyElementIndex-1,this._stickyElements.item(this._focusedStickyElementIndex).focus()}goToFocused(){const e=this._stickyScrollWidget.lineNumbers;this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:e[this._focusedStickyElementIndex],column:1})}_revealPosition(e){this._positionRevealed=!0,this._editor.revealPosition(e),this._editor.setSelection(se.e.fromPositions(e)),this._editor.focus()}_createClickLinkGesture(){const e=new c.SL,t=new c.SL;e.add(t);const i=new ie.yN(this._editor,!0);return e.add(i),e.add(i.onMouseMoveOrRelevantKeyDown((([e,i])=>{if(!this._editor.hasModel()||!e.hasTriggerModifier)return void t.clear();const s=e.target;if(s.detail===this._stickyScrollWidget.getId()&&s.element.innerText===s.element.innerHTML){const e=s.element.innerText;if(-1===this._stickyScrollWidget.hoverOnColumn)return;const i=this._stickyScrollWidget.hoverOnLine,o=this._stickyScrollWidget.hoverOnColumn,n=new se.e(i,o,i,o+e.length);if(n.equalsRange(this._stickyRangeProjectedOnEditor)){if("underline"===s.element.style.textDecoration)return}else this._stickyRangeProjectedOnEditor=n,t.clear();const r=new w.A;let a;t.add((0,c.OF)((()=>r.dispose(!0)))),(0,oe.nD)(this._languageFeaturesService.definitionProvider,this._editor.getModel(),new m.L(i,o+1),r.token).then((e=>{if(!r.token.isCancellationRequested)if(0!==e.length){this._candidateDefinitionsLength=e.length;const i=s.element;a!==i?(t.clear(),a=i,a.style.textDecoration="underline",t.add((0,c.OF)((()=>{a.style.textDecoration="none"})))):a||(a=i,a.style.textDecoration="underline",t.add((0,c.OF)((()=>{a.style.textDecoration="none"}))))}else t.clear()}))}else t.clear()}))),e.add(i.onCancel((()=>{t.clear()}))),e.add(i.onExecute((e=>de(this,void 0,void 0,(function*(){e.target.detail===this._stickyScrollWidget.getId()&&(e.hasTriggerModifier?(this._candidateDefinitionsLength>1&&(this._focused&&this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:this._stickyScrollWidget.hoverOnLine,column:1})),this._instaService.invokeFunction(ne.K,e,this._editor,{uri:this._editor.getModel().uri,range:this._stickyRangeProjectedOnEditor})):e.isRightClick||(this._focused&&this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:this._stickyScrollWidget.hoverOnLine,column:this._stickyScrollWidget.hoverOnColumn})))}))))),e}_onContextMenu(e){const t=new g.n(e);this._contextMenuService.showContextMenu({menuId:r.eH.StickyScrollContext,getAnchor:()=>t})}_readConfiguration(){const e=this._editor.getOption(113);if(!1===e.enabled)return this._editor.removeOverlayWidget(this._stickyScrollWidget),this._sessionStore.clear(),void(this._enabled=!1);e.enabled&&!this._enabled&&(this._editor.addOverlayWidget(this._stickyScrollWidget),this._sessionStore.add(this._editor.onDidScrollChange((()=>this._renderStickyScroll()))),this._sessionStore.add(this._editor.onDidLayoutChange((()=>this._onDidResize()))),this._sessionStore.add(this._editor.onDidChangeModelTokens((e=>this._onTokensChange(e)))),this._sessionStore.add(this._stickyLineCandidateProvider.onDidChangeStickyScroll((()=>this._renderStickyScroll()))),this._enabled=!0);const t=this._editor.getOption(66);2===t.renderType&&this._sessionStore.add(this._editor.onDidChangeCursorPosition((()=>this._renderStickyScroll())))}_needsUpdate(e){const t=this._stickyScrollWidget.getCurrentLines();for(const i of t)for(const t of e.ranges)if(i>=t.fromLineNumber&&i<=t.toLineNumber)return!0;return!1}_onTokensChange(e){this._needsUpdate(e)&&this._renderStickyScroll()}_onDidResize(){const e=this._editor.getLayoutInfo(),t=e.width-e.minimap.minimapCanvasOuterWidth-e.verticalScrollbarWidth;this._stickyScrollWidget.getDomNode().style.width=`${t}px`;const i=e.height/this._editor.getOption(65);this._maxStickyLines=Math.round(.25*i)}_renderStickyScroll(){if(!this._editor.hasModel())return;const e=this._editor.getModel(),t=this._stickyLineCandidateProvider.getVersionId();if(void 0===t||t===e.getVersionId())if(this._widgetState=this.findScrollWidgetState(),this._stickyScrollVisibleContextKey.set(!(0===this._widgetState.lineNumbers.length)),this._focused)if(this._stickyElements=this._stickyScrollWidget.getDomNode().children,-1===this._focusedStickyElementIndex)this._stickyScrollWidget.setState(this._widgetState),this._focusedStickyElementIndex=this._stickyElements.length-1,-1!==this._focusedStickyElementIndex&&this._stickyElements.item(this._focusedStickyElementIndex).focus();else{const e=this._stickyScrollWidget.lineNumbers[this._focusedStickyElementIndex];if(this._stickyScrollWidget.setState(this._widgetState),0===this._stickyElements.length)this._focusedStickyElementIndex=-1;else{const t=this._stickyScrollWidget.lineNumbers.includes(e);t||(this._focusedStickyElementIndex=this._stickyElements.length-1),this._stickyElements.item(this._focusedStickyElementIndex).focus()}}else this._stickyScrollWidget.setState(this._widgetState)}findScrollWidgetState(){const e=this._editor.getOption(65),t=Math.min(this._maxStickyLines,this._editor.getOption(113).maxLineCount),i=this._editor.getScrollTop();let s=0;const o=[],n=this._editor.getVisibleRanges();if(0!==n.length){const r=new M(n[0].startLineNumber,n[n.length-1].endLineNumber),a=this._stickyLineCandidateProvider.getCandidateStickyLinesIntersecting(r);for(const n of a){const r=n.startLineNumber,a=n.endLineNumber,l=n.nestingDepth;if(a-r>0){const n=(l-1)*e,d=l*e,c=this._editor.getBottomForLineNumber(r)-i,h=this._editor.getTopForLineNumber(a)-i,u=this._editor.getBottomForLineNumber(a)-i;if(n>h&&n<=u){o.push(r),s=u-d;break}if(d>c&&d<=u&&o.push(r),o.length===t)break}}}return new S(o,s)}dispose(){super.dispose(),this._sessionStore.dispose()}};ce.ID="store.contrib.stickyScrollController",ce=ae([le(1,te.i),le(2,h.p),le(3,ee.TG),le(4,T.c_),le(5,re.A),le(6,l.i6)],ce);var he=function(e,t,i,s){function o(e){return e instanceof i?e:new i((function(t){t(e)}))}return new(i||(i=Promise))((function(i,n){function r(e){try{l(s.next(e))}catch(t){n(t)}}function a(e){try{l(s["throw"](e))}catch(t){n(t)}}function l(e){e.done?i(e.value):o(e.value).then(r,a)}l((s=s.apply(e,t||[])).next())}))};class ue extends r.Ke{constructor(){super({id:"editor.action.toggleStickyScroll",title:{value:(0,o.NC)("toggleStickyScroll","Toggle Sticky Scroll"),mnemonicTitle:(0,o.NC)({key:"mitoggleStickyScroll",comment:["&& denotes a mnemonic"]},"&&Toggle Sticky Scroll"),original:"Toggle Sticky Scroll"},category:n.R.View,toggled:{condition:l.Ao.equals("config.editor.stickyScroll.enabled",!0),title:(0,o.NC)("stickyScroll","Sticky Scroll"),mnemonicTitle:(0,o.NC)({key:"miStickyScroll",comment:["&& denotes a mnemonic"]},"&&Sticky Scroll")},menu:[{id:r.eH.CommandPalette},{id:r.eH.MenubarViewMenu,group:"5_editor",order:2},{id:r.eH.StickyScrollContext}]})}run(e){return he(this,void 0,void 0,(function*(){const t=e.get(a.Ui),i=!t.getValue("editor.stickyScroll.enabled");return t.updateValue("editor.stickyScroll.enabled",i)}))}}const ge=100;class pe extends s.x1{constructor(){super({id:"editor.action.focusStickyScroll",title:{value:(0,o.NC)("focusStickyScroll","Focus Sticky Scroll"),mnemonicTitle:(0,o.NC)({key:"mifocusStickyScroll",comment:["&& denotes a mnemonic"]},"&&Focus Sticky Scroll"),original:"Focus Sticky Scroll"},precondition:l.Ao.and(l.Ao.has("config.editor.stickyScroll.enabled"),d.u.stickyScrollVisible),menu:[{id:r.eH.CommandPalette}]})}runEditorCommand(e,t){var i;null===(i=ce.get(t))||void 0===i||i.focus()}}class _e extends s.x1{constructor(){super({id:"editor.action.selectNextStickyScrollLine",title:{value:(0,o.NC)("selectNextStickyScrollLine.title","Select next sticky scroll line"),original:"Select next sticky scroll line"},precondition:d.u.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:ge,primary:18}})}runEditorCommand(e,t){var i;null===(i=ce.get(t))||void 0===i||i.focusNext()}}class me extends s.x1{constructor(){super({id:"editor.action.selectPreviousStickyScrollLine",title:{value:(0,o.NC)("selectPreviousStickyScrollLine.title","Select previous sticky scroll line"),original:"Select previous sticky scroll line"},precondition:d.u.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:ge,primary:16}})}runEditorCommand(e,t){var i;null===(i=ce.get(t))||void 0===i||i.focusPrevious()}}class fe extends s.x1{constructor(){super({id:"editor.action.goToFocusedStickyScrollLine",title:{value:(0,o.NC)("goToFocusedStickyScrollLine.title","Go to focused sticky scroll line"),original:"Go to focused sticky scroll line"},precondition:d.u.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:ge,primary:3}})}runEditorCommand(e,t){var i;null===(i=ce.get(t))||void 0===i||i.goToFocused()}}class ve extends s.x1{constructor(){super({id:"editor.action.selectEditor",title:{value:(0,o.NC)("selectEditor.title","Select Editor"),original:"Select Editor"},precondition:d.u.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:ge,primary:9}})}runEditorCommand(e,t){var i;null===(i=ce.get(t))||void 0===i||i.selectEditor()}}(0,s._K)(ce.ID,ce,1),(0,r.r1)(ue),(0,r.r1)(pe),(0,r.r1)(me),(0,r.r1)(_e),(0,r.r1)(fe),(0,r.r1)(ve)},50930:(e,t,i)=>{i.d(t,{_:()=>a,t:()=>r});var s=i(21921),o=i(70546),n=i(61720);class r{constructor(e,t){this.leadingLineContent=e,this.characterCountDelta=t}}class a{constructor(e,t,i,s,n,r,l=o.mX.default,d=void 0){this.clipboardText=d,this._snippetCompareFn=a._compareCompletionItems,this._items=e,this._column=t,this._wordDistance=s,this._options=n,this._refilterKind=1,this._lineContext=i,this._fuzzyScoreOptions=l,"top"===r?this._snippetCompareFn=a._compareCompletionItemsSnippetsUp:"bottom"===r&&(this._snippetCompareFn=a._compareCompletionItemsSnippetsDown)}get lineContext(){return this._lineContext}set lineContext(e){this._lineContext.leadingLineContent===e.leadingLineContent&&this._lineContext.characterCountDelta===e.characterCountDelta||(this._refilterKind=this._lineContext.characterCountDelta0&&i[0].container.incomplete&&e.add(t);return e}get stats(){return this._ensureCachedState(),this._stats}_ensureCachedState(){0!==this._refilterKind&&this._createCachedState()}_createCachedState(){this._itemsByProvider=new Map;const e=[],{leadingLineContent:t,characterCountDelta:i}=this._lineContext;let r="",a="";const l=1===this._refilterKind?this._items:this._filteredItems,d=[],c=!this._options.filterGraceful||l.length>2e3?o.EW:o.l7;for(let s=0;s=p)h.score=o.CL.Default;else if("string"===typeof h.completion.filterText){const t=c(r,a,e,h.completion.filterText,h.filterTextLow,0,this._fuzzyScoreOptions);if(!t)continue;0===(0,n.zY)(h.completion.filterText,h.textLabel)?h.score=t:(h.score=(0,o.jB)(r,a,e,h.textLabel,h.labelLow,0),h.score[0]=t[0])}else{const t=c(r,a,e,h.textLabel,h.labelLow,0,this._fuzzyScoreOptions);if(!t)continue;h.score=t}}h.idx=s,h.distance=this._wordDistance.distance(h.position,h.completion),d.push(h),e.push(h.textLabel.length)}this._filteredItems=d.sort(this._snippetCompareFn),this._refilterKind=0,this._stats={pLabelLen:e.length?(0,s.HW)(e.length-.85,e,((e,t)=>e-t)):0}}static _compareCompletionItems(e,t){return e.score[0]>t.score[0]?-1:e.score[0]t.distance?1:e.idxt.idx?1:0}static _compareCompletionItemsSnippetsDown(e,t){if(e.completion.kind!==t.completion.kind){if(27===e.completion.kind)return 1;if(27===t.completion.kind)return-1}return a._compareCompletionItems(e,t)}static _compareCompletionItemsSnippetsUp(e,t){if(e.completion.kind!==t.completion.kind){if(27===e.completion.kind)return-1;if(27===t.completion.kind)return 1}return a._compareCompletionItems(e,t)}}},49864:(e,t,i)=>{i.d(t,{A9:()=>k,GI:()=>C,ZJ:()=>x,_y:()=>y,i5:()=>M,kL:()=>T,tG:()=>O});var s=i(55191),o=i(98642),n=i(70546),r=i(70959),a=i(96729),l=i(55455),d=i(95896),c=i(89999),h=i(33162),u=i(15498),g=i(43124),p=i(25206),_=i(82693),m=i(46871),f=i(37174),v=i(16458),b=i(97795),S=function(e,t,i,s){function o(e){return e instanceof i?e:new i((function(t){t(e)}))}return new(i||(i=Promise))((function(i,n){function r(e){try{l(s.next(e))}catch(t){n(t)}}function a(e){try{l(s["throw"](e))}catch(t){n(t)}}function l(e){e.done?i(e.value):o(e.value).then(r,a)}l((s=s.apply(e,t||[])).next())}))};const y={Visible:b.iX,HasFocusedSuggestion:new f.uy("suggestWidgetHasFocusedSuggestion",!1,(0,p.NC)("suggestWidgetHasSelection","Whether any suggestion is focused")),DetailsVisible:new f.uy("suggestWidgetDetailsVisible",!1,(0,p.NC)("suggestWidgetDetailsVisible","Whether suggestion details are visible")),MultipleSuggestions:new f.uy("suggestWidgetMultipleSuggestions",!1,(0,p.NC)("suggestWidgetMultipleSuggestions","Whether there are multiple suggestions to pick from")),MakesTextEdit:new f.uy("suggestionMakesTextEdit",!0,(0,p.NC)("suggestionMakesTextEdit","Whether inserting the current suggestion yields in a change or has everything already been typed")),AcceptSuggestionsOnEnter:new f.uy("acceptSuggestionOnEnter",!0,(0,p.NC)("acceptSuggestionOnEnter","Whether suggestions are inserted when pressing Enter")),HasInsertAndReplaceRange:new f.uy("suggestionHasInsertAndReplaceRange",!1,(0,p.NC)("suggestionHasInsertAndReplaceRange","Whether the current suggestion has insert and replace behaviour")),InsertMode:new f.uy("suggestionInsertMode",void 0,{type:"string",description:(0,p.NC)("suggestionInsertMode","Whether the default behaviour is to insert or replace")}),CanResolve:new f.uy("suggestionCanResolve",!1,(0,p.NC)("suggestionCanResolve","Whether the current suggestion supports to resolve further details"))},C=new _.eH("suggestWidgetStatusBar");class w{constructor(e,t,i,s){var o;this.position=e,this.completion=t,this.container=i,this.provider=s,this.isInvalid=!1,this.score=n.CL.Default,this.distance=0,this.textLabel="string"===typeof t.label?t.label:null===(o=t.label)||void 0===o?void 0:o.label,this.labelLow=this.textLabel.toLowerCase(),this.isInvalid=!this.textLabel,this.sortTextLow=t.sortText&&t.sortText.toLowerCase(),this.filterTextLow=t.filterText&&t.filterText.toLowerCase(),this.extensionId=t.extensionId,h.e.isIRange(t.range)?(this.editStart=new c.L(t.range.startLineNumber,t.range.startColumn),this.editInsertEnd=new c.L(t.range.endLineNumber,t.range.endColumn),this.editReplaceEnd=new c.L(t.range.endLineNumber,t.range.endColumn),this.isInvalid=this.isInvalid||h.e.spansMultipleLines(t.range)||t.range.startLineNumber!==e.lineNumber):(this.editStart=new c.L(t.range.insert.startLineNumber,t.range.insert.startColumn),this.editInsertEnd=new c.L(t.range.insert.endLineNumber,t.range.insert.endColumn),this.editReplaceEnd=new c.L(t.range.replace.endLineNumber,t.range.replace.endColumn),this.isInvalid=this.isInvalid||h.e.spansMultipleLines(t.range.insert)||h.e.spansMultipleLines(t.range.replace)||t.range.insert.startLineNumber!==e.lineNumber||t.range.replace.startLineNumber!==e.lineNumber||t.range.insert.startColumn!==t.range.replace.startColumn),"function"!==typeof s.resolveCompletionItem&&(this._resolveCache=Promise.resolve(),this._resolveDuration=0)}get isResolved(){return void 0!==this._resolveDuration}get resolveDuration(){return void 0!==this._resolveDuration?this._resolveDuration:-1}resolve(e){return S(this,void 0,void 0,(function*(){if(!this._resolveCache){const t=e.onCancellationRequested((()=>{this._resolveCache=void 0,this._resolveDuration=void 0})),i=new a.G(!0);this._resolveCache=Promise.resolve(this.provider.resolveCompletionItem(this.completion,e)).then((e=>{Object.assign(this.completion,e),this._resolveDuration=i.elapsed(),t.dispose()}),(e=>{(0,o.n2)(e)&&(this._resolveCache=void 0,this._resolveDuration=void 0)}))}return this._resolveCache}))}}class k{constructor(e=2,t=new Set,i=new Set,s=new Map,o=!0){this.snippetSortOrder=e,this.kindFilter=t,this.providerFilter=i,this.providerItemsToReuse=s,this.showDeprecated=o}}let D;function x(){return D}k.default=new k;class N{constructor(e,t,i,s){this.items=e,this.needsClipboard=t,this.durations=i,this.disposable=s}}function T(e,t,i,n=k.default,l={triggerKind:0},d=s.T.None){return S(this,void 0,void 0,(function*(){const s=new a.G;i=i.clone();const c=t.getWordAtPosition(i),u=c?new h.e(i.lineNumber,c.startColumn,i.lineNumber,c.endColumn):h.e.fromPositions(i),p={replace:u,insert:u.setEndPosition(i.lineNumber,i.column)},_=[],m=new r.SL,f=[];let v=!1;const b=(e,t,s)=>{var o,a,l;let d=!1;if(!t)return d;for(const r of t.suggestions)if(!n.kindFilter.has(r.kind)){if(!n.showDeprecated&&(null===(o=null===r||void 0===r?void 0:r.tags)||void 0===o?void 0:o.includes(1)))continue;r.range||(r.range=p),r.sortText||(r.sortText="string"===typeof r.label?r.label:r.label.label),!v&&r.insertTextRules&&4&r.insertTextRules&&(v=g.Yj.guessNeedsClipboard(r.insertText)),_.push(new w(i,r,t,e)),d=!0}return(0,r.Wf)(t)&&m.add(t),f.push({providerName:null!==(a=e._debugDisplayName)&&void 0!==a?a:"unknown_provider",elapsedProvider:null!==(l=t.duration)&&void 0!==l?l:-1,elapsedOverall:s.elapsed()}),d},y=(()=>S(this,void 0,void 0,(function*(){if(!D||n.kindFilter.has(27))return;const e=n.providerItemsToReuse.get(D);if(e)return void e.forEach((e=>_.push(e)));if(n.providerFilter.size>0&&!n.providerFilter.has(D))return;const s=new a.G,o=yield D.provideCompletionItems(t,i,l,d);b(D,o,s)})))();for(const r of e.orderedGroups(t)){let e=!1;if(yield Promise.all(r.map((s=>S(this,void 0,void 0,(function*(){if(n.providerItemsToReuse.has(s)){const t=n.providerItemsToReuse.get(s);return t.forEach((e=>_.push(e))),void(e=e||t.length>0)}if(!(n.providerFilter.size>0)||n.providerFilter.has(s))try{const o=new a.G,n=yield s.provideCompletionItems(t,i,l,d);e=b(s,n,o)||e}catch(r){(0,o.Cp)(r)}}))))),e||d.isCancellationRequested)break}return yield y,d.isCancellationRequested?(m.dispose(),Promise.reject(new o.FU)):new N(_.sort(E(n.snippetSortOrder)),v,{entries:f,elapsed:s.elapsed()},m)}))}function I(e,t){if(e.sortTextLow&&t.sortTextLow){if(e.sortTextLowt.sortTextLow)return 1}return e.textLabelt.textLabel?1:e.completion.kind-t.completion.kind}function L(e,t){if(e.completion.kind!==t.completion.kind){if(27===e.completion.kind)return-1;if(27===t.completion.kind)return 1}return I(e,t)}function R(e,t){if(e.completion.kind!==t.completion.kind){if(27===e.completion.kind)return 1;if(27===t.completion.kind)return-1}return I(e,t)}const P=new Map;function E(e){return P.get(e)}function M(e,t){var i;null===(i=e.getContribution("editor.contrib.suggestController"))||void 0===i||i.triggerSuggest((new Set).add(t),void 0,!0)}P.set(0,L),P.set(2,R),P.set(1,I),m.P.registerCommand("_executeCompletionItemProvider",((e,...t)=>S(void 0,void 0,void 0,(function*(){const[i,o,n,r]=t;(0,l.p_)(d.o.isUri(i)),(0,l.p_)(c.L.isIPosition(o)),(0,l.p_)("string"===typeof n||!n),(0,l.p_)("number"===typeof r||!r);const{completionProvider:a}=e.get(v.p),h=yield e.get(u.S).createModelReference(i);try{const e={incomplete:!1,suggestions:[]},t=[],i=h.object.textEditorModel.validatePosition(o),l=yield T(a,h.object.textEditorModel,i,void 0,{triggerCharacter:null!==n&&void 0!==n?n:void 0,triggerKind:n?1:0});for(const o of l.items)t.length<(null!==r&&void 0!==r?r:0)&&t.push(o.resolve(s.T.None)),e.incomplete=e.incomplete||o.container.incomplete,e.suggestions.push(o.completion);try{return yield Promise.all(t),e}finally{setTimeout((()=>l.disposable.dispose()),100)}}finally{h.dispose()}}))));class O{static isAllOff(e){return"off"===e.other&&"off"===e.comments&&"off"===e.strings}static isAllOn(e){return"on"===e.other&&"on"===e.comments&&"on"===e.strings}static valueFor(e,t){switch(t){case 1:return e.comments;case 2:return e.strings;default:return e.other}}}},55743:(e,t,i)=>{i.d(t,{n:()=>rt});var s=i(69332),o=i(21921),n=i(85398),r=i(55191),a=i(98642),l=i(11271),d=i(19321),c=i(70959),h=i(47606),u=i(96729),g=i(55455),p=i(95402),_=i(48077),m=i(90970),f=i(89999),v=i(33162),b=i(44950),S=i(58151),y=i(43124),C=i(1600),w=i(37174),k=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},D=function(e,t){return function(i,s){t(i,s,e)}};let x=class e{constructor(t,i){this._editor=t,this._enabled=!1,this._ckAtEnd=e.AtEnd.bindTo(i),this._configListener=this._editor.onDidChangeConfiguration((e=>e.hasChanged(121)&&this._update())),this._update()}dispose(){var e;this._configListener.dispose(),null===(e=this._selectionListener)||void 0===e||e.dispose(),this._ckAtEnd.reset()}_update(){const e="on"===this._editor.getOption(121);if(this._enabled!==e)if(this._enabled=e,this._enabled){const e=()=>{if(!this._editor.hasModel())return void this._ckAtEnd.set(!1);const e=this._editor.getModel(),t=this._editor.getSelection(),i=e.getWordAtPosition(t.getStartPosition());i?this._ckAtEnd.set(i.endColumn===t.getStartPosition().column):this._ckAtEnd.set(!1)};this._selectionListener=this._editor.onDidChangeCursorSelection(e),e()}else this._selectionListener&&(this._ckAtEnd.reset(),this._selectionListener.dispose(),this._selectionListener=void 0)}};x.AtEnd=new w.uy("atEndOfWord",!1),x=k([D(1,w.i6)],x);var N=i(25206),T=i(46871),I=i(21881),L=i(23034),R=i(49864),P=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},E=function(e,t){return function(i,s){t(i,s,e)}};let M=class e{constructor(t,i){this._editor=t,this._index=0,this._ckOtherSuggestions=e.OtherSuggestions.bindTo(i)}dispose(){this.reset()}reset(){var e;this._ckOtherSuggestions.reset(),null===(e=this._listener)||void 0===e||e.dispose(),this._model=void 0,this._acceptNext=void 0,this._ignore=!1}set({model:t,index:i},s){if(0===t.items.length)return void this.reset();const o=e._moveIndex(!0,t,i);o!==i?(this._acceptNext=s,this._model=t,this._index=i,this._listener=this._editor.onDidChangeCursorPosition((()=>{this._ignore||this.reset()})),this._ckOtherSuggestions.set(!0)):this.reset()}static _moveIndex(e,t,i){let s=i;for(let o=t.items.length;o>0;o--){if(s=(s+t.items.length+(e?1:-1))%t.items.length,s===i)break;if(!t.items[s].completion.additionalTextEdits)break}return s}next(){this._move(!0)}prev(){this._move(!1)}_move(t){if(this._model)try{this._ignore=!0,this._index=e._moveIndex(t,this._model,this._index),this._acceptNext({index:this._index,item:this._model.items[this._index],model:this._model})}finally{this._ignore=!1}}};M.OtherSuggestions=new w.uy("hasOtherSuggestions",!1),M=P([E(1,w.i6)],M);var O=i(51099);class F{constructor(e,t,i,s){this._disposables=new c.SL,this._disposables.add(i.onDidSuggest((e=>{0===e.completionModel.items.length&&this.reset()}))),this._disposables.add(i.onDidCancel((e=>{this.reset()}))),this._disposables.add(t.onDidShow((()=>this._onItem(t.getFocusedItem())))),this._disposables.add(t.onDidFocus(this._onItem,this)),this._disposables.add(t.onDidHide(this.reset,this)),this._disposables.add(e.onWillType((o=>{if(this._active&&!t.isFrozen()&&0!==i.state){const t=o.charCodeAt(o.length-1);this._active.acceptCharacters.has(t)&&e.getOption(0)&&s(this._active.item)}})))}_onItem(e){if(!e||!(0,o.Of)(e.item.completion.commitCharacters))return void this.reset();if(this._active&&this._active.item.item===e.item)return;const t=new O.q;for(const i of e.item.completion.commitCharacters)i.length>0&&t.add(i.charCodeAt(0));this._active={acceptCharacters:t,item:e}}reset(){this._active=void 0}dispose(){this._disposables.dispose()}}var A=i(61720),z=i(54644),H=i(52473),W=i(2903),V=i(2827),B=i(47596),G=i(38857),U=i(50930),$=i(16458),j=i(70546),K=i(42985),q=i(913),J=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},Y=function(e,t){return function(i,s){t(i,s,e)}},X=function(e,t,i,s){function o(e){return e instanceof i?e:new i((function(t){t(e)}))}return new(i||(i=Promise))((function(i,n){function r(e){try{l(s.next(e))}catch(t){n(t)}}function a(e){try{l(s["throw"](e))}catch(t){n(t)}}function l(e){e.done?i(e.value):o(e.value).then(r,a)}l((s=s.apply(e,t||[])).next())}))};class Q{static shouldAutoTrigger(e){if(!e.hasModel())return!1;const t=e.getModel(),i=e.getPosition();t.tokenization.tokenizeIfCheap(i.lineNumber);const s=t.getWordAtPosition(i);return!!s&&((s.endColumn===i.column||s.startColumn+1===i.column)&&!!isNaN(Number(s.word)))}constructor(e,t,i){this.leadingLineContent=e.getLineContent(t.lineNumber).substr(0,t.column-1),this.leadingWord=e.getWordUntilPosition(t),this.lineNumber=t.lineNumber,this.column=t.column,this.triggerOptions=i}}function Z(e,t,i){if(!Boolean(t.getContextKeyValue(K.f.inlineSuggestionVisible.key)))return!0;const s=t.getContextKeyValue(K.f.suppressSuggestions.key);return void 0!==s?!s:!e.getOption(61).suppressSuggestions}function ee(e,t,i){if(!Boolean(t.getContextKeyValue("inlineSuggestionVisible")))return!0;const s=t.getContextKeyValue(K.f.suppressSuggestions.key);return void 0!==s?!s:!e.getOption(61).suppressSuggestions}let te=class e{constructor(e,t,i,s,o,r,a,d,h){this._editor=e,this._editorWorkerService=t,this._clipboardService=i,this._telemetryService=s,this._logService=o,this._contextKeyService=r,this._configurationService=a,this._languageFeaturesService=d,this._envService=h,this._toDispose=new c.SL,this._triggerCharacterListener=new c.SL,this._triggerQuickSuggest=new n._F,this._triggerState=void 0,this._completionDisposables=new c.SL,this._onDidCancel=new l.Q5,this._onDidTrigger=new l.Q5,this._onDidSuggest=new l.Q5,this.onDidCancel=this._onDidCancel.event,this.onDidTrigger=this._onDidTrigger.event,this.onDidSuggest=this._onDidSuggest.event,this._telemetryGate=0,this._currentSelection=this._editor.getSelection()||new z.Y(1,1,1,1),this._toDispose.add(this._editor.onDidChangeModel((()=>{this._updateTriggerCharacters(),this.cancel()}))),this._toDispose.add(this._editor.onDidChangeModelLanguage((()=>{this._updateTriggerCharacters(),this.cancel()}))),this._toDispose.add(this._editor.onDidChangeConfiguration((()=>{this._updateTriggerCharacters()}))),this._toDispose.add(this._languageFeaturesService.completionProvider.onDidChange((()=>{this._updateTriggerCharacters(),this._updateActiveSuggestSession()})));let u=!1;this._toDispose.add(this._editor.onDidCompositionStart((()=>{u=!0}))),this._toDispose.add(this._editor.onDidCompositionEnd((()=>{u=!1,this._onCompositionEnd()}))),this._toDispose.add(this._editor.onDidChangeCursorSelection((e=>{u||this._onCursorChange(e)}))),this._toDispose.add(this._editor.onDidChangeModelContent((()=>{u||void 0===this._triggerState||this._refilterCompletionItems()}))),this._updateTriggerCharacters()}dispose(){(0,c.B9)(this._triggerCharacterListener),(0,c.B9)([this._onDidCancel,this._onDidSuggest,this._onDidTrigger,this._triggerQuickSuggest]),this._toDispose.dispose(),this._completionDisposables.dispose(),this.cancel()}_updateTriggerCharacters(){if(this._triggerCharacterListener.clear(),this._editor.getOption(89)||!this._editor.hasModel()||!this._editor.getOption(119))return;const e=new Map;for(const i of this._languageFeaturesService.completionProvider.all(this._editor.getModel()))for(const t of i.triggerCharacters||[]){let s=e.get(t);s||(s=new Set,s.add((0,R.ZJ)()),e.set(t,s)),s.add(i)}const t=t=>{var i;if(!ee(this._editor,this._contextKeyService,this._configurationService))return;if(Q.shouldAutoTrigger(this._editor))return;if(!t){const e=this._editor.getPosition(),i=this._editor.getModel();t=i.getLineContent(e.lineNumber).substr(0,e.column-1)}let s="";(0,A.YK)(t.charCodeAt(t.length-1))?(0,A.ZG)(t.charCodeAt(t.length-2))&&(s=t.substr(t.length-2)):s=t.charAt(t.length-1);const o=e.get(s);if(o){const e=new Map;if(this._completionModel)for(const[t,i]of this._completionModel.getItemsByProvider())o.has(t)||e.set(t,i);this.trigger({auto:!0,triggerKind:1,triggerCharacter:s,retrigger:Boolean(this._completionModel),clipboardText:null===(i=this._completionModel)||void 0===i?void 0:i.clipboardText,completionOptions:{providerFilter:o,providerItemsToReuse:e}})}};this._triggerCharacterListener.add(this._editor.onDidType(t)),this._triggerCharacterListener.add(this._editor.onDidCompositionEnd((()=>t())))}get state(){return this._triggerState?this._triggerState.auto?2:1:0}cancel(e=!1){var t;void 0!==this._triggerState&&(this._triggerQuickSuggest.cancel(),null===(t=this._requestToken)||void 0===t||t.cancel(),this._requestToken=void 0,this._triggerState=void 0,this._completionModel=void 0,this._context=void 0,this._onDidCancel.fire({retrigger:e}))}clear(){this._completionDisposables.clear()}_updateActiveSuggestSession(){void 0!==this._triggerState&&(this._editor.hasModel()&&this._languageFeaturesService.completionProvider.has(this._editor.getModel())?this.trigger({auto:this._triggerState.auto,retrigger:!0}):this.cancel())}_onCursorChange(e){if(!this._editor.hasModel())return;const t=this._currentSelection;this._currentSelection=this._editor.getSelection(),!e.selection.isEmpty()||0!==e.reason&&3!==e.reason||"keyboard"!==e.source&&"deleteLeft"!==e.source?this.cancel():void 0===this._triggerState&&0===e.reason?(t.containsRange(this._currentSelection)||t.getEndPosition().isBeforeOrEqual(this._currentSelection.getPosition()))&&this._doTriggerQuickSuggest():void 0!==this._triggerState&&3===e.reason&&this._refilterCompletionItems()}_onCompositionEnd(){void 0===this._triggerState?this._doTriggerQuickSuggest():this._refilterCompletionItems()}_doTriggerQuickSuggest(){var e;R.tG.isAllOff(this._editor.getOption(87))||this._editor.getOption(116).snippetsPreventQuickSuggestions&&(null===(e=S.f.get(this._editor))||void 0===e?void 0:e.isInSnippet())||(this.cancel(),this._triggerQuickSuggest.cancelAndSet((()=>{if(void 0!==this._triggerState)return;if(!Q.shouldAutoTrigger(this._editor))return;if(!this._editor.hasModel()||!this._editor.hasWidgetFocus())return;const e=this._editor.getModel(),t=this._editor.getPosition(),i=this._editor.getOption(87);if(!R.tG.isAllOff(i)){if(!R.tG.isAllOn(i)){e.tokenization.tokenizeIfCheap(t.lineNumber);const s=e.tokenization.getLineTokens(t.lineNumber),o=s.getStandardTokenType(s.findTokenIndexAtOffset(Math.max(t.column-1-1,0)));if("on"!==R.tG.valueFor(i,o))return}Z(this._editor,this._contextKeyService,this._configurationService)&&this._languageFeaturesService.completionProvider.has(e)&&this.trigger({auto:!0})}}),this._editor.getOption(88)))}_refilterCompletionItems(){(0,g.p_)(this._editor.hasModel()),(0,g.p_)(void 0!==this._triggerState);const e=this._editor.getModel(),t=this._editor.getPosition(),i=new Q(e,t,Object.assign(Object.assign({},this._triggerState),{refilter:!0}));this._onNewContext(i)}trigger(t){var i,s,o,n,l,d;if(!this._editor.hasModel())return;const c=this._editor.getModel(),h=new Q(c,this._editor.getPosition(),t);this.cancel(t.retrigger),this._triggerState=t,this._onDidTrigger.fire({auto:t.auto,shy:null!==(i=t.shy)&&void 0!==i&&i,position:this._editor.getPosition()}),this._context=h;let u={triggerKind:null!==(s=t.triggerKind)&&void 0!==s?s:0};t.triggerCharacter&&(u={triggerKind:1,triggerCharacter:t.triggerCharacter}),this._requestToken=new r.A;const g=this._editor.getOption(110);let p=1;switch(g){case"top":p=0;break;case"bottom":p=2;break}const{itemKind:_,showDeprecated:m}=e._createSuggestFilter(this._editor),f=new R.A9(p,null!==(n=null===(o=t.completionOptions)||void 0===o?void 0:o.kindFilter)&&void 0!==n?n:_,null===(l=t.completionOptions)||void 0===l?void 0:l.providerFilter,null===(d=t.completionOptions)||void 0===d?void 0:d.providerItemsToReuse,m),v=W.K.create(this._editorWorkerService,this._editor),b=(0,R.kL)(this._languageFeaturesService.completionProvider,c,this._editor.getPosition(),f,u,this._requestToken.token);Promise.all([b,v]).then((([e,i])=>X(this,void 0,void 0,(function*(){var s;if(null===(s=this._requestToken)||void 0===s||s.dispose(),!this._editor.hasModel())return;let o=null===t||void 0===t?void 0:t.clipboardText;if(!o&&e.needsClipboard&&(o=yield this._clipboardService.readText()),void 0===this._triggerState)return;const n=this._editor.getModel(),r=new Q(n,this._editor.getPosition(),t),a=Object.assign(Object.assign({},j.mX.default),{firstMatchCanBeWeak:!this._editor.getOption(116).matchOnWordStartOnly});if(this._completionModel=new U._(e.items,this._context.column,{leadingLineContent:r.leadingLineContent,characterCountDelta:r.column-this._context.column},i,this._editor.getOption(116),this._editor.getOption(110),a,o),this._completionDisposables.add(e.disposable),this._onNewContext(r),this._reportDurationsTelemetry(e.durations),!this._envService.isBuilt||this._envService.isExtensionDevelopment)for(const t of e.items)t.isInvalid&&this._logService.warn(`[suggest] did IGNORE invalid completion item from ${t.provider._debugDisplayName}`,t.completion)})))).catch(a.dL)}_reportDurationsTelemetry(e){this._telemetryGate++%230===0&&setTimeout((()=>{this._telemetryService.publicLog2("suggest.durations.json",{data:JSON.stringify(e)}),this._logService.debug("suggest.durations.json",e)}))}static _createSuggestFilter(e){const t=new Set,i=e.getOption(110);"none"===i&&t.add(27);const s=e.getOption(116);return s.showMethods||t.add(0),s.showFunctions||t.add(1),s.showConstructors||t.add(2),s.showFields||t.add(3),s.showVariables||t.add(4),s.showClasses||t.add(5),s.showStructs||t.add(6),s.showInterfaces||t.add(7),s.showModules||t.add(8),s.showProperties||t.add(9),s.showEvents||t.add(10),s.showOperators||t.add(11),s.showUnits||t.add(12),s.showValues||t.add(13),s.showConstants||t.add(14),s.showEnums||t.add(15),s.showEnumMembers||t.add(16),s.showKeywords||t.add(17),s.showWords||t.add(18),s.showColors||t.add(19),s.showFiles||t.add(20),s.showReferences||t.add(21),s.showColors||t.add(22),s.showFolders||t.add(23),s.showTypeParameters||t.add(24),s.showSnippets||t.add(27),s.showUsers||t.add(25),s.showIssues||t.add(26),{itemKind:t,showDeprecated:s.showDeprecated}}_onNewContext(e){if(this._context)if(e.lineNumber===this._context.lineNumber)if((0,A.V8)(e.leadingLineContent)===(0,A.V8)(this._context.leadingLineContent)){if(e.columnthis._context.leadingWord.startColumn){const e=Q.shouldAutoTrigger(this._editor);if(e&&this._context){const e=this._completionModel.getItemsByProvider();this.trigger({auto:this._context.triggerOptions.auto,retrigger:!0,clipboardText:this._completionModel.clipboardText,completionOptions:{providerItemsToReuse:e}})}}else if(e.column>this._context.column&&this._completionModel.getIncompleteProvider().size>0&&0!==e.leadingWord.word.length){const e=new Map,t=new Set;for(const[i,s]of this._completionModel.getItemsByProvider())s.length>0&&s[0].container.incomplete?t.add(i):e.set(i,s);this.trigger({auto:this._context.triggerOptions.auto,triggerKind:2,retrigger:!0,clipboardText:this._completionModel.clipboardText,completionOptions:{providerFilter:t,providerItemsToReuse:e}})}else{const t=this._completionModel.lineContext;let i=!1;if(this._completionModel.lineContext={leadingLineContent:e.leadingLineContent,characterCountDelta:e.column-this._context.column},0===this._completionModel.items.length){const s=Q.shouldAutoTrigger(this._editor);if(!this._context)return void this.cancel();if(s&&this._context.leadingWord.endColumn0,i&&0===e.leadingWord.word.length)return void this.cancel()}this._onDidSuggest.fire({completionModel:this._completionModel,triggerOptions:e.triggerOptions,isFrozen:i})}}else this.cancel();else this.cancel()}};te=J([Y(1,H.p),Y(2,V.p),Y(3,G.b),Y(4,L.VZ),Y(5,w.i6),Y(6,B.Ui),Y(7,$.p),Y(8,q.Y)],te);class ie{constructor(e,t){this._disposables=new c.SL,this._lastOvertyped=[],this._locked=!1,this._disposables.add(e.onWillType((()=>{if(this._locked||!e.hasModel())return;const t=e.getSelections(),i=t.length;let s=!1;for(let e=0;eie._maxSelectionLength)return;this._lastOvertyped[e]={value:o.getValueInRange(i),multiline:i.startLineNumber!==i.endLineNumber}}}))),this._disposables.add(t.onDidTrigger((e=>{this._locked=!0}))),this._disposables.add(t.onDidCancel((e=>{this._locked=!1})))}getLastOvertypedInfo(e){if(e>=0&&e=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},he=function(e,t){return function(i,s){t(i,s,e)}};class ue extends le.Mm{updateLabel(){const e=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!e)return super.updateLabel();this.label&&(this.label.textContent=(0,N.NC)({key:"content",comment:["A label","A keybinding"]},"{0} ({1})",this._action.label,ue.symbolPrintEnter(e)))}static symbolPrintEnter(e){var t;return null===(t=e.getLabel())||void 0===t?void 0:t.replace(/\benter\b/gi,"⏎")}}let ge=class{constructor(e,t,i,s,o){this._menuId=t,this._menuService=s,this._contextKeyService=o,this._menuDisposables=new c.SL,this.element=se.R3(e,se.$(".suggest-status-bar"));const n=e=>e instanceof de.U8?i.createInstance(ue,e,void 0):void 0;this._leftActions=new ae.o(this.element,{actionViewItemProvider:n}),this._rightActions=new ae.o(this.element,{actionViewItemProvider:n}),this._leftActions.domNode.classList.add("left"),this._rightActions.domNode.classList.add("right")}dispose(){this._menuDisposables.dispose(),this.element.remove()}show(){const e=this._menuService.createMenu(this._menuId,this._contextKeyService),t=()=>{const t=[],i=[];for(const[s,o]of e.getActions())"left"===s?t.push(...o):i.push(...o);this._leftActions.clear(),this._leftActions.push(t),this._rightActions.clear(),this._rightActions.push(i)};this._menuDisposables.add(e.onDidChange((()=>t()))),this._menuDisposables.add(e)}hide(){this._menuDisposables.clear()}};ge=ce([he(2,I.TG),he(3,de.co),he(4,w.i6)],ge);i(75413);var pe=i(51906),_e=i(47277),me=i(71976),fe=i(32656),ve=i(83950),be=i(60841),Se=i(8419),ye=i(99588),Ce=i(81478),we=i(92767),ke=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},De=function(e,t){return function(i,s){t(i,s,e)}};function xe(e){return!!e&&Boolean(e.completion.documentation||e.completion.detail&&e.completion.detail!==e.completion.label)}let Ne=class{constructor(e,t){this._editor=e,this._onDidClose=new l.Q5,this.onDidClose=this._onDidClose.event,this._onDidChangeContents=new l.Q5,this.onDidChangeContents=this._onDidChangeContents.event,this._disposables=new c.SL,this._renderDisposeable=new c.SL,this._borderWidth=1,this._size=new se.Ro(330,0),this.domNode=se.$(".suggest-details"),this.domNode.classList.add("no-docs"),this._markdownRenderer=t.createInstance(we.$,{editor:e}),this._body=se.$(".body"),this._scrollbar=new be.s$(this._body,{alwaysConsumeMouseWheel:!0}),se.R3(this.domNode,this._scrollbar.getDomNode()),this._disposables.add(this._scrollbar),this._header=se.R3(this._body,se.$(".header")),this._close=se.R3(this._header,se.$("span"+ye.k.asCSSSelector(Se.l.close))),this._close.title=N.NC("details.close","Close"),this._type=se.R3(this._header,se.$("p.type")),this._docs=se.R3(this._body,se.$("p.docs")),this._configureFont(),this._disposables.add(this._editor.onDidChangeConfiguration((e=>{e.hasChanged(49)&&this._configureFont()})))}dispose(){this._disposables.dispose(),this._renderDisposeable.dispose()}_configureFont(){const e=this._editor.getOptions(),t=e.get(49),i=t.getMassagedFontFamily(),s=e.get(117)||t.fontSize,o=e.get(118)||t.lineHeight,n=t.fontWeight,r=`${s}px`,a=`${o}px`;this.domNode.style.fontSize=r,this.domNode.style.lineHeight=""+o/s,this.domNode.style.fontWeight=n,this.domNode.style.fontFeatureSettings=t.fontFeatureSettings,this._type.style.fontFamily=i,this._close.style.height=a,this._close.style.width=a}getLayoutInfo(){const e=this._editor.getOption(118)||this._editor.getOption(49).lineHeight,t=this._borderWidth,i=2*t;return{lineHeight:e,borderWidth:t,borderHeight:i,verticalPadding:22,horizontalPadding:14}}renderLoading(){this._type.textContent=N.NC("loading","Loading..."),this._docs.textContent="",this.domNode.classList.remove("no-docs","no-type"),this.layout(this.size.width,2*this.getLayoutInfo().lineHeight),this._onDidChangeContents.fire(this)}renderItem(e,t){var i,s;this._renderDisposeable.clear();let{detail:o,documentation:n}=e.completion;if(t){let t="";t+=`score: ${e.score[0]}\n`,t+=`prefix: ${null!==(i=e.word)&&void 0!==i?i:"(no prefix)"}\n`,t+=`word: ${e.completion.filterText?e.completion.filterText+" (filterText)":e.textLabel}\n`,t+=`distance: ${e.distance} (localityBonus-setting)\n`,t+=`index: ${e.idx}, based on ${e.completion.sortText&&`sortText: "${e.completion.sortText}"`||"label"}\n`,t+=`commit_chars: ${null===(s=e.completion.commitCharacters)||void 0===s?void 0:s.join("")}\n`,n=(new Ce.W5).appendCodeblock("empty",t),o=`Provider: ${e.provider._debugDisplayName}`}if(t||xe(e)){if(this.domNode.classList.remove("no-docs","no-type"),o){const e=o.length>1e5?`${o.substr(0,1e5)}…`:o;this._type.textContent=e,this._type.title=e,se.$Z(this._type),this._type.classList.toggle("auto-wrap",!/\r?\n^\s+/gim.test(e))}else se.PO(this._type),this._type.title="",se.Cp(this._type),this.domNode.classList.add("no-type");if(se.PO(this._docs),"string"===typeof n)this._docs.classList.remove("markdown-docs"),this._docs.textContent=n;else if(n){this._docs.classList.add("markdown-docs"),se.PO(this._docs);const e=this._markdownRenderer.render(n);this._docs.appendChild(e.element),this._renderDisposeable.add(e),this._renderDisposeable.add(this._markdownRenderer.onDidRenderAsync((()=>{this.layout(this._size.width,this._type.clientHeight+this._docs.clientHeight),this._onDidChangeContents.fire(this)})))}this.domNode.style.userSelect="text",this.domNode.tabIndex=-1,this._close.onmousedown=e=>{e.preventDefault(),e.stopPropagation()},this._close.onclick=e=>{e.preventDefault(),e.stopPropagation(),this._onDidClose.fire()},this._body.scrollTop=0,this.layout(this._size.width,this._type.clientHeight+this._docs.clientHeight),this._onDidChangeContents.fire(this)}else this.clearContents()}clearContents(){this.domNode.classList.add("no-docs"),this._type.textContent="",this._docs.textContent=""}get size(){return this._size}layout(e,t){const i=new se.Ro(e,t);se.Ro.equals(i,this._size)||(this._size=i,se.dp(this.domNode,e,t)),this._scrollbar.scanDomNode()}scrollDown(e=8){this._body.scrollTop+=e}scrollUp(e=8){this._body.scrollTop-=e}scrollTop(){this._body.scrollTop=0}scrollBottom(){this._body.scrollTop=this._body.scrollHeight}pageDown(){this.scrollDown(80)}pageUp(){this.scrollUp(80)}set borderWidth(e){this._borderWidth=e}get borderWidth(){return this._borderWidth}};Ne=ke([De(1,I.TG)],Ne);class Te{constructor(e,t){let i,s;this.widget=e,this._editor=t,this._disposables=new c.SL,this._added=!1,this._preferAlignAtTop=!0,this._resizable=new ve.f,this._resizable.domNode.classList.add("suggest-details-container"),this._resizable.domNode.appendChild(e.domNode),this._resizable.enableSashes(!1,!0,!0,!1);let o=0,n=0;this._disposables.add(this._resizable.onDidWillResize((()=>{i=this._topLeft,s=this._resizable.size}))),this._disposables.add(this._resizable.onDidResize((e=>{if(i&&s){this.widget.layout(e.dimension.width,e.dimension.height);let t=!1;e.west&&(n=s.width-e.dimension.width,t=!0),e.north&&(o=s.height-e.dimension.height,t=!0),t&&this._applyTopLeft({top:i.top+o,left:i.left+n})}e.done&&(i=void 0,s=void 0,o=0,n=0,this._userSize=e.dimension)}))),this._disposables.add(this.widget.onDidChangeContents((()=>{var e;this._anchorBox&&this._placeAtAnchor(this._anchorBox,null!==(e=this._userSize)&&void 0!==e?e:this.widget.size,this._preferAlignAtTop)})))}dispose(){this._resizable.dispose(),this._disposables.dispose(),this.hide()}getId(){return"suggest.details"}getDomNode(){return this._resizable.domNode}getPosition(){return null}show(){this._added||(this._editor.addOverlayWidget(this),this.getDomNode().style.position="fixed",this._added=!0)}hide(e=!1){this._resizable.clearSashHoverState(),this._added&&(this._editor.removeOverlayWidget(this),this._added=!1,this._anchorBox=void 0,this._topLeft=void 0),e&&(this._userSize=void 0,this.widget.clearContents())}placeAtAnchor(e,t){var i;const s=e.getBoundingClientRect();this._anchorBox=s,this._preferAlignAtTop=t,this._placeAtAnchor(this._anchorBox,null!==(i=this._userSize)&&void 0!==i?i:this.widget.size,t)}_placeAtAnchor(e,t,i){var s;const o=se.D6(document.body),n=this.widget.getLayoutInfo(),r=new se.Ro(220,2*n.lineHeight),a=e.top,l=function(){const i=o.width-(e.left+e.width+n.borderWidth+n.horizontalPadding),s=-n.borderWidth+e.left+e.width,l=new se.Ro(i,o.height-e.top-n.borderHeight-n.verticalPadding),d=l.with(void 0,e.top+e.height-n.borderHeight-n.verticalPadding);return{top:a,left:s,fit:i-t.width,maxSizeTop:l,maxSizeBottom:d,minSize:r.with(Math.min(i,r.width))}}(),d=function(){const i=e.left-n.borderWidth-n.horizontalPadding,s=Math.max(n.horizontalPadding,e.left-t.width-n.borderWidth),l=new se.Ro(i,o.height-e.top-n.borderHeight-n.verticalPadding),d=l.with(void 0,e.top+e.height-n.borderHeight-n.verticalPadding);return{top:a,left:s,fit:i-t.width,maxSizeTop:l,maxSizeBottom:d,minSize:r.with(Math.min(i,r.width))}}(),c=function(){const i=e.left,s=-n.borderWidth+e.top+e.height,a=new se.Ro(e.width-n.borderHeight,o.height-e.top-e.height-n.verticalPadding);return{top:s,left:i,fit:a.height-t.height,maxSizeBottom:a,maxSizeTop:a,minSize:r.with(a.width)}}(),h=[l,d,c],u=null!==(s=h.find((e=>e.fit>=0)))&&void 0!==s?s:h.sort(((e,t)=>t.fit-e.fit))[0],g=e.top+e.height-n.borderHeight;let p,_=t.height;const m=Math.max(u.maxSizeTop.height,u.maxSizeBottom.height);let f;_>m&&(_=m),i?_<=u.maxSizeTop.height?(p=!0,f=u.maxSizeTop):(p=!1,f=u.maxSizeBottom):_<=u.maxSizeBottom.height?(p=!1,f=u.maxSizeBottom):(p=!0,f=u.maxSizeTop),this._applyTopLeft({left:u.left,top:p?u.top:g-_}),this.getDomNode().style.position="fixed",this._resizable.enableSashes(!p,u===l,p,u!==l),this._resizable.minSize=u.minSize,this._resizable.maxSize=f,this._resizable.layout(_,Math.min(f.width,t.width)),this.widget.layout(this._resizable.size.width,this._resizable.size.height)}_applyTopLeft(e){this._topLeft=e,this.getDomNode().style.left=`${this._topLeft.left}px`,this.getDomNode().style.top=`${this._topLeft.top}px`}}var Ie,Le=i(10791),Re=i(95896),Pe=i(67026),Ee=i(64490),Me=i(74016),Oe=i(61141),Fe=i(3365),Ae=i(98158),ze=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},He=function(e,t){return function(i,s){t(i,s,e)}};function We(e){return`suggest-aria-id:${e}`}const Ve=(0,Ae.q5)("suggest-more-info",Se.l.chevronRight,N.NC("suggestMoreInfoIcon","Icon for more information in the suggest widget.")),Be=new(Ie=class e{extract(t,i){if(t.textLabel.match(e._regexStrict))return i[0]=t.textLabel,!0;if(t.completion.detail&&t.completion.detail.match(e._regexStrict))return i[0]=t.completion.detail,!0;if("string"===typeof t.completion.documentation){const s=e._regexRelaxed.exec(t.completion.documentation);if(s&&(0===s.index||s.index+s[0].length===t.completion.documentation.length))return i[0]=s[0],!0}return!1}},Ie._regexRelaxed=/(#([\da-fA-F]{3}){1,2}|(rgb|hsl)a\(\s*(\d{1,3}%?\s*,\s*){3}(1|0?\.\d+)\)|(rgb|hsl)\(\s*\d{1,3}%?(\s*,\s*\d{1,3}%?){2}\s*\))/,Ie._regexStrict=new RegExp(`^${Ie._regexRelaxed.source}$`,"i"),Ie);let Ge=class{constructor(e,t,i,s){this._editor=e,this._modelService=t,this._languageService=i,this._themeService=s,this._onDidToggleDetails=new l.Q5,this.onDidToggleDetails=this._onDidToggleDetails.event,this.templateId="suggestion"}dispose(){this._onDidToggleDetails.dispose()}renderTemplate(e){const t=new c.SL,i=e;i.classList.add("show-file-icons");const s=(0,se.R3)(e,(0,se.$)(".icon")),o=(0,se.R3)(s,(0,se.$)("span.colorspan")),n=(0,se.R3)(e,(0,se.$)(".contents")),r=(0,se.R3)(n,(0,se.$)(".main")),a=(0,se.R3)(r,(0,se.$)(".icon-label.codicon")),l=(0,se.R3)(r,(0,se.$)("span.left")),d=(0,se.R3)(r,(0,se.$)("span.right")),h=new Le.g(l,{supportHighlights:!0,supportIcons:!0});t.add(h);const u=(0,se.R3)(l,(0,se.$)("span.signature-label")),g=(0,se.R3)(l,(0,se.$)("span.qualifier-label")),p=(0,se.R3)(d,(0,se.$)("span.details-label")),_=(0,se.R3)(d,(0,se.$)("span.readMore"+ye.k.asCSSSelector(Ve)));_.title=N.NC("readMore","Read More");const m=()=>{const e=this._editor.getOptions(),t=e.get(49),o=t.getMassagedFontFamily(),n=t.fontFeatureSettings,a=e.get(117)||t.fontSize,l=e.get(118)||t.lineHeight,d=t.fontWeight,c=t.letterSpacing,h=`${a}px`,u=`${l}px`,g=`${c}px`;i.style.fontSize=h,i.style.fontWeight=d,i.style.letterSpacing=g,r.style.fontFamily=o,r.style.fontFeatureSettings=n,r.style.lineHeight=u,s.style.height=u,s.style.width=u,_.style.height=u,_.style.width=u};return m(),t.add(this._editor.onDidChangeConfiguration((e=>{(e.hasChanged(49)||e.hasChanged(117)||e.hasChanged(118))&&m()}))),{root:i,left:l,right:d,icon:s,colorspan:o,iconLabel:h,iconContainer:a,parametersLabel:u,qualifierLabel:g,detailsLabel:p,readMore:_,disposables:t}}renderElement(e,t,i){const{completion:s}=e;i.root.id=We(t),i.colorspan.style.backgroundColor="";const o={labelEscapeNewLines:!0,matches:(0,j.mB)(e.score)},n=[];if(19===s.kind&&Be.extract(e,n))i.icon.className="icon customcolor",i.iconContainer.className="icon hide",i.colorspan.style.backgroundColor=n[0];else if(20===s.kind&&this._themeService.getFileIconTheme().hasFileIcons){i.icon.className="icon hide",i.iconContainer.className="icon hide";const t=(0,Ee.r)(this._modelService,this._languageService,Re.o.from({scheme:"fake",path:e.textLabel}),Fe.R.FILE),n=(0,Ee.r)(this._modelService,this._languageService,Re.o.from({scheme:"fake",path:s.detail}),Fe.R.FILE);o.extraClasses=t.length>n.length?t:n}else 23===s.kind&&this._themeService.getFileIconTheme().hasFolderIcons?(i.icon.className="icon hide",i.iconContainer.className="icon hide",o.extraClasses=[(0,Ee.r)(this._modelService,this._languageService,Re.o.from({scheme:"fake",path:e.textLabel}),Fe.R.FOLDER),(0,Ee.r)(this._modelService,this._languageService,Re.o.from({scheme:"fake",path:s.detail}),Fe.R.FOLDER)].flat()):(i.icon.className="icon hide",i.iconContainer.className="",i.iconContainer.classList.add("suggest-icon",...ye.k.asClassNameArray(Pe.gX.toIcon(s.kind))));s.tags&&s.tags.indexOf(1)>=0&&(o.extraClasses=(o.extraClasses||[]).concat(["deprecated"]),o.matches=[]),i.iconLabel.setLabel(e.textLabel,void 0,o),"string"===typeof s.label?(i.parametersLabel.textContent="",i.detailsLabel.textContent=Ue(s.detail||""),i.root.classList.add("string-label")):(i.parametersLabel.textContent=Ue(s.label.detail||""),i.detailsLabel.textContent=Ue(s.label.description||""),i.root.classList.remove("string-label")),this._editor.getOption(116).showInlineDetails?(0,se.$Z)(i.detailsLabel):(0,se.Cp)(i.detailsLabel),xe(e)?(i.right.classList.add("can-expand-details"),(0,se.$Z)(i.readMore),i.readMore.onmousedown=e=>{e.stopPropagation(),e.preventDefault()},i.readMore.onclick=e=>{e.stopPropagation(),e.preventDefault(),this._onDidToggleDetails.fire()}):(i.right.classList.remove("can-expand-details"),(0,se.Cp)(i.readMore),i.readMore.onmousedown=null,i.readMore.onclick=null)}disposeTemplate(e){e.disposables.dispose()}};function Ue(e){return e.replace(/\r\n|\r|\n/g,"")}Ge=ze([He(1,Me.q),He(2,Oe.O),He(3,fe.XE)],Ge);var $e=i(22454),je=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},Ke=function(e,t){return function(i,s){t(i,s,e)}},qe=function(e,t,i,s){function o(e){return e instanceof i?e:new i((function(t){t(e)}))}return new(i||(i=Promise))((function(i,n){function r(e){try{l(s.next(e))}catch(t){n(t)}}function a(e){try{l(s["throw"](e))}catch(t){n(t)}}function l(e){e.done?i(e.value):o(e.value).then(r,a)}l((s=s.apply(e,t||[])).next())}))};(0,_e.P6G)("editorSuggestWidget.background",{dark:_e.D0T,light:_e.D0T,hcDark:_e.D0T,hcLight:_e.D0T},N.NC("editorSuggestWidgetBackground","Background color of the suggest widget.")),(0,_e.P6G)("editorSuggestWidget.border",{dark:_e.D1_,light:_e.D1_,hcDark:_e.D1_,hcLight:_e.D1_},N.NC("editorSuggestWidgetBorder","Border color of the suggest widget."));const Je=(0,_e.P6G)("editorSuggestWidget.foreground",{dark:_e.NOs,light:_e.NOs,hcDark:_e.NOs,hcLight:_e.NOs},N.NC("editorSuggestWidgetForeground","Foreground color of the suggest widget."));(0,_e.P6G)("editorSuggestWidget.selectedForeground",{dark:_e.NPS,light:_e.NPS,hcDark:_e.NPS,hcLight:_e.NPS},N.NC("editorSuggestWidgetSelectedForeground","Foreground color of the selected entry in the suggest widget.")),(0,_e.P6G)("editorSuggestWidget.selectedIconForeground",{dark:_e.cbQ,light:_e.cbQ,hcDark:_e.cbQ,hcLight:_e.cbQ},N.NC("editorSuggestWidgetSelectedIconForeground","Icon foreground color of the selected entry in the suggest widget."));const Ye=(0,_e.P6G)("editorSuggestWidget.selectedBackground",{dark:_e.Vqd,light:_e.Vqd,hcDark:_e.Vqd,hcLight:_e.Vqd},N.NC("editorSuggestWidgetSelectedBackground","Background color of the selected entry in the suggest widget."));(0,_e.P6G)("editorSuggestWidget.highlightForeground",{dark:_e.Gwp,light:_e.Gwp,hcDark:_e.Gwp,hcLight:_e.Gwp},N.NC("editorSuggestWidgetHighlightForeground","Color of the match highlights in the suggest widget.")),(0,_e.P6G)("editorSuggestWidget.focusHighlightForeground",{dark:_e.PX0,light:_e.PX0,hcDark:_e.PX0,hcLight:_e.PX0},N.NC("editorSuggestWidgetFocusHighlightForeground","Color of the match highlights in the suggest widget when an item is focused.")),(0,_e.P6G)("editorSuggestWidgetStatus.foreground",{dark:(0,_e.ZnX)(Je,.5),light:(0,_e.ZnX)(Je,.5),hcDark:(0,_e.ZnX)(Je,.5),hcLight:(0,_e.ZnX)(Je,.5)},N.NC("editorSuggestWidgetStatusForeground","Foreground color of the suggest widget status."));class Xe{constructor(e,t){this._service=e,this._key=`suggestWidget.size/${t.getEditorType()}/${t instanceof re.H}`}restore(){var e;const t=null!==(e=this._service.get(this._key,0))&&void 0!==e?e:"";try{const e=JSON.parse(t);if(se.Ro.is(e))return se.Ro.lift(e)}catch(i){}}store(e){this._service.store(this._key,JSON.stringify(e),0,1)}reset(){this._service.remove(this._key,0)}}let Qe=class e{constructor(e,t,i,s,o){this.editor=e,this._storageService=t,this._state=0,this._isAuto=!1,this._pendingLayout=new c.XK,this._pendingShowDetails=new c.XK,this._ignoreFocusEvents=!1,this._forceRenderingAbove=!1,this._explainMode=!1,this._showTimeout=new n._F,this._disposables=new c.SL,this._onDidSelect=new l.K3,this._onDidFocus=new l.K3,this._onDidHide=new l.Q5,this._onDidShow=new l.Q5,this.onDidSelect=this._onDidSelect.event,this.onDidFocus=this._onDidFocus.event,this.onDidHide=this._onDidHide.event,this.onDidShow=this._onDidShow.event,this._onDetailsKeydown=new l.Q5,this.onDetailsKeyDown=this._onDetailsKeydown.event,this.element=new ve.f,this.element.domNode.classList.add("editor-widget","suggest-widget"),this._contentWidget=new Ze(this,e),this._persistedSize=new Xe(t,e);class r{constructor(e,t,i=!1,s=!1){this.persistedSize=e,this.currentSize=t,this.persistHeight=i,this.persistWidth=s}}let a;this._disposables.add(this.element.onDidWillResize((()=>{this._contentWidget.lockPreference(),a=new r(this._persistedSize.restore(),this.element.size)}))),this._disposables.add(this.element.onDidResize((e=>{var t,i,s,o;if(this._resize(e.dimension.width,e.dimension.height),a&&(a.persistHeight=a.persistHeight||!!e.north||!!e.south,a.persistWidth=a.persistWidth||!!e.east||!!e.west),e.done){if(a){const{itemHeight:e,defaultSize:n}=this.getLayoutInfo(),r=Math.round(e/2);let{width:l,height:d}=this.element.size;(!a.persistHeight||Math.abs(a.currentSize.height-d)<=r)&&(d=null!==(i=null===(t=a.persistedSize)||void 0===t?void 0:t.height)&&void 0!==i?i:n.height),(!a.persistWidth||Math.abs(a.currentSize.width-l)<=r)&&(l=null!==(o=null===(s=a.persistedSize)||void 0===s?void 0:s.width)&&void 0!==o?o:n.width),this._persistedSize.store(new se.Ro(l,d))}this._contentWidget.unlockPreference(),a=void 0}}))),this._messageElement=se.R3(this.element.domNode,se.$(".message")),this._listElement=se.R3(this.element.domNode,se.$(".tree"));const d=o.createInstance(Ne,this.editor);d.onDidClose(this.toggleDetails,this,this._disposables),this._details=new Te(d,this.editor);const h=()=>this.element.domNode.classList.toggle("no-icons",!this.editor.getOption(116).showIcons);h();const u=o.createInstance(Ge,this.editor);this._disposables.add(u),this._disposables.add(u.onDidToggleDetails((()=>this.toggleDetails()))),this._list=new oe.aV("SuggestWidget",this._listElement,{getHeight:e=>this.getLayoutInfo().itemHeight,getTemplateId:e=>"suggestion"},[u],{alwaysConsumeMouseWheel:!0,useShadows:!1,mouseSupport:!1,multipleSelectionSupport:!1,accessibilityProvider:{getRole:()=>"option",getWidgetAriaLabel:()=>N.NC("suggest","Suggest"),getWidgetRole:()=>"listbox",getAriaLabel:e=>{let t=e.textLabel;if("string"!==typeof e.completion.label){const{detail:i,description:s}=e.completion.label;i&&s?t=N.NC("label.full","{0} {1}, {2}",t,i,s):i?t=N.NC("label.detail","{0} {1}",t,i):s&&(t=N.NC("label.desc","{0}, {1}",t,s))}if(!e.isResolved||!this._isDetailsVisible())return t;const{documentation:i,detail:s}=e.completion,o=A.WU("{0}{1}",s||"",i?"string"===typeof i?i:i.value:"");return N.NC("ariaCurrenttSuggestionReadDetails","{0}, docs: {1}",t,o)}}}),this._list.style((0,$e.TU)({listInactiveFocusBackground:Ye,listInactiveFocusOutline:_e.xL1})),this._status=o.createInstance(ge,this.element.domNode,R.GI);const g=()=>this.element.domNode.classList.toggle("with-status-bar",this.editor.getOption(116).showStatusBar);g(),this._disposables.add(s.onDidColorThemeChange((e=>this._onThemeChange(e)))),this._onThemeChange(s.getColorTheme()),this._disposables.add(this._list.onMouseDown((e=>this._onListMouseDownOrTap(e)))),this._disposables.add(this._list.onTap((e=>this._onListMouseDownOrTap(e)))),this._disposables.add(this._list.onDidChangeSelection((e=>this._onListSelection(e)))),this._disposables.add(this._list.onDidChangeFocus((e=>this._onListFocus(e)))),this._disposables.add(this.editor.onDidChangeCursorSelection((()=>this._onCursorSelectionChanged()))),this._disposables.add(this.editor.onDidChangeConfiguration((e=>{e.hasChanged(116)&&(g(),h())}))),this._ctxSuggestWidgetVisible=R._y.Visible.bindTo(i),this._ctxSuggestWidgetDetailsVisible=R._y.DetailsVisible.bindTo(i),this._ctxSuggestWidgetMultipleSuggestions=R._y.MultipleSuggestions.bindTo(i),this._ctxSuggestWidgetHasFocusedSuggestion=R._y.HasFocusedSuggestion.bindTo(i),this._disposables.add(se.mu(this._details.widget.domNode,"keydown",(e=>{this._onDetailsKeydown.fire(e)}))),this._disposables.add(this.editor.onMouseDown((e=>this._onEditorMouseDown(e))))}dispose(){var e;this._details.widget.dispose(),this._details.dispose(),this._list.dispose(),this._status.dispose(),this._disposables.dispose(),null===(e=this._loadingTimeout)||void 0===e||e.dispose(),this._pendingLayout.dispose(),this._pendingShowDetails.dispose(),this._showTimeout.dispose(),this._contentWidget.dispose(),this.element.dispose()}_onEditorMouseDown(e){this._details.widget.domNode.contains(e.target.element)?this._details.widget.domNode.focus():this.element.domNode.contains(e.target.element)&&this.editor.focus()}_onCursorSelectionChanged(){0!==this._state&&this._contentWidget.layout()}_onListMouseDownOrTap(e){"undefined"!==typeof e.element&&"undefined"!==typeof e.index&&(e.browserEvent.preventDefault(),e.browserEvent.stopPropagation(),this._select(e.element,e.index))}_onListSelection(e){e.elements.length&&this._select(e.elements[0],e.indexes[0])}_select(e,t){const i=this._completionModel;i&&(this._onDidSelect.fire({item:e,index:t,model:i}),this.editor.focus())}_onThemeChange(e){this._details.widget.borderWidth=(0,me.c3)(e.type)?2:1}_onListFocus(e){var t;if(this._ignoreFocusEvents)return;if(!e.elements.length)return this._currentSuggestionDetails&&(this._currentSuggestionDetails.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=void 0),this.editor.setAriaOptions({activeDescendant:void 0}),void this._ctxSuggestWidgetHasFocusedSuggestion.set(!1);if(!this._completionModel)return;this._ctxSuggestWidgetHasFocusedSuggestion.set(!0);const i=e.elements[0],s=e.indexes[0];i!==this._focusedItem&&(null===(t=this._currentSuggestionDetails)||void 0===t||t.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=i,this._list.reveal(s),this._currentSuggestionDetails=(0,n.PG)((e=>qe(this,void 0,void 0,(function*(){const t=(0,n.Vg)((()=>{this._isDetailsVisible()&&this.showDetails(!0)}),250),s=e.onCancellationRequested((()=>t.dispose())),o=yield i.resolve(e);return t.dispose(),s.dispose(),o})))),this._currentSuggestionDetails.then((()=>{s>=this._list.length||i!==this._list.element(s)||(this._ignoreFocusEvents=!0,this._list.splice(s,1,[i]),this._list.setFocus([s]),this._ignoreFocusEvents=!1,this._isDetailsVisible()?this.showDetails(!1):this.element.domNode.classList.remove("docs-side"),this.editor.setAriaOptions({activeDescendant:We(s)}))})).catch(a.dL)),this._onDidFocus.fire({item:i,index:s,model:this._completionModel})}_setState(t){if(this._state!==t)switch(this._state=t,this.element.domNode.classList.toggle("frozen",4===t),this.element.domNode.classList.remove("message"),t){case 0:se.Cp(this._messageElement,this._listElement,this._status.element),this._details.hide(!0),this._status.hide(),this._contentWidget.hide(),this._ctxSuggestWidgetVisible.reset(),this._ctxSuggestWidgetMultipleSuggestions.reset(),this._ctxSuggestWidgetHasFocusedSuggestion.reset(),this._showTimeout.cancel(),this.element.domNode.classList.remove("visible"),this._list.splice(0,this._list.length),this._focusedItem=void 0,this._cappedHeight=void 0,this._explainMode=!1;break;case 1:this.element.domNode.classList.add("message"),this._messageElement.textContent=e.LOADING_MESSAGE,se.Cp(this._listElement,this._status.element),se.$Z(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0;break;case 2:this.element.domNode.classList.add("message"),this._messageElement.textContent=e.NO_SUGGESTIONS_MESSAGE,se.Cp(this._listElement,this._status.element),se.$Z(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0;break;case 3:se.Cp(this._messageElement),se.$Z(this._listElement,this._status.element),this._show();break;case 4:se.Cp(this._messageElement),se.$Z(this._listElement,this._status.element),this._show();break;case 5:se.Cp(this._messageElement),se.$Z(this._listElement,this._status.element),this._details.show(),this._show();break}}_show(){this._status.show(),this._contentWidget.show(),this._layout(this._persistedSize.restore()),this._ctxSuggestWidgetVisible.set(!0),this._showTimeout.cancelAndSet((()=>{this.element.domNode.classList.add("visible"),this._onDidShow.fire(this)}),100)}showTriggered(e,t){0===this._state&&(this._contentWidget.setPosition(this.editor.getPosition()),this._isAuto=!!e,this._isAuto||(this._loadingTimeout=(0,n.Vg)((()=>this._setState(1)),t)))}showSuggestions(e,t,i,s,o){var n,r;if(this._contentWidget.setPosition(this.editor.getPosition()),null===(n=this._loadingTimeout)||void 0===n||n.dispose(),null===(r=this._currentSuggestionDetails)||void 0===r||r.cancel(),this._currentSuggestionDetails=void 0,this._completionModel!==e&&(this._completionModel=e),i&&2!==this._state&&0!==this._state)return void this._setState(4);const a=this._completionModel.items.length,l=0===a;if(this._ctxSuggestWidgetMultipleSuggestions.set(a>1),l)return this._setState(s?0:2),void(this._completionModel=void 0);this._focusedItem=void 0,this._onDidFocus.pause(),this._onDidSelect.pause();try{this._list.splice(0,this._list.length,this._completionModel.items),this._setState(i?4:3),this._list.reveal(t,0),this._list.setFocus(o?[]:[t])}finally{this._onDidFocus.resume(),this._onDidSelect.resume()}this._pendingLayout.value=se.lI((()=>{this._pendingLayout.clear(),this._layout(this.element.size),this._details.widget.domNode.classList.remove("focused")}))}focusSelected(){this._list.length>0&&this._list.setFocus([0])}selectNextPage(){switch(this._state){case 0:return!1;case 5:return this._details.widget.pageDown(),!0;case 1:return!this._isAuto;default:return this._list.focusNextPage(),!0}}selectNext(){switch(this._state){case 0:return!1;case 1:return!this._isAuto;default:return this._list.focusNext(1,!0),!0}}selectLast(){switch(this._state){case 0:return!1;case 5:return this._details.widget.scrollBottom(),!0;case 1:return!this._isAuto;default:return this._list.focusLast(),!0}}selectPreviousPage(){switch(this._state){case 0:return!1;case 5:return this._details.widget.pageUp(),!0;case 1:return!this._isAuto;default:return this._list.focusPreviousPage(),!0}}selectPrevious(){switch(this._state){case 0:return!1;case 1:return!this._isAuto;default:return this._list.focusPrevious(1,!0),!1}}selectFirst(){switch(this._state){case 0:return!1;case 5:return this._details.widget.scrollTop(),!0;case 1:return!this._isAuto;default:return this._list.focusFirst(),!0}}getFocusedItem(){if(0!==this._state&&2!==this._state&&1!==this._state&&this._completionModel&&this._list.getFocus().length>0)return{item:this._list.getFocusedElements()[0],index:this._list.getFocus()[0],model:this._completionModel}}toggleDetailsFocus(){5===this._state?(this._setState(3),this._details.widget.domNode.classList.remove("focused")):3===this._state&&this._isDetailsVisible()&&(this._setState(5),this._details.widget.domNode.classList.add("focused"))}toggleDetails(){this._isDetailsVisible()?(this._pendingShowDetails.clear(),this._ctxSuggestWidgetDetailsVisible.set(!1),this._setDetailsVisible(!1),this._details.hide(),this.element.domNode.classList.remove("shows-details")):!xe(this._list.getFocusedElements()[0])&&!this._explainMode||3!==this._state&&5!==this._state&&4!==this._state||(this._ctxSuggestWidgetDetailsVisible.set(!0),this._setDetailsVisible(!0),this.showDetails(!1))}showDetails(e){this._pendingShowDetails.value=se.lI((()=>{this._pendingShowDetails.clear(),this._details.show(),e?this._details.widget.renderLoading():this._details.widget.renderItem(this._list.getFocusedElements()[0],this._explainMode),this._positionDetails(),this.editor.focus(),this.element.domNode.classList.add("shows-details")}))}toggleExplainMode(){this._list.getFocusedElements()[0]&&(this._explainMode=!this._explainMode,this._isDetailsVisible()?this.showDetails(!1):this.toggleDetails())}resetPersistedSize(){this._persistedSize.reset()}hideWidget(){var e;this._pendingLayout.clear(),this._pendingShowDetails.clear(),null===(e=this._loadingTimeout)||void 0===e||e.dispose(),this._setState(0),this._onDidHide.fire(this),this.element.clearSashHoverState();const t=this._persistedSize.restore(),i=Math.ceil(4.3*this.getLayoutInfo().itemHeight);t&&t.heightl&&(a=l);const d=this._completionModel?this._completionModel.stats.pLabelLen*n.typicalHalfwidthCharacterWidth:a,c=n.statusBarHeight+this._list.contentHeight+n.borderHeight,h=n.itemHeight+n.statusBarHeight,u=se.i(this.editor.getDomNode()),g=this.editor.getScrolledVisiblePosition(this.editor.getPosition()),p=u.top+g.top+g.height,_=Math.min(o.height-p-n.verticalPadding,c),m=u.top+g.top-n.verticalPadding,f=Math.min(m,c);let v=Math.min(Math.max(f,_)+n.borderHeight,c);r===(null===(t=this._cappedHeight)||void 0===t?void 0:t.capped)&&(r=this._cappedHeight.wanted),rv&&(r=v);const b=150;r>_||this._forceRenderingAbove&&m>b?(this._contentWidget.setPreference(1),this.element.enableSashes(!0,!0,!1,!1),v=f):(this._contentWidget.setPreference(2),this.element.enableSashes(!1,!0,!0,!1),v=_),this.element.preferredSize=new se.Ro(d,n.defaultSize.height),this.element.maxSize=new se.Ro(l,v),this.element.minSize=new se.Ro(220,h),this._cappedHeight=r===c?{wanted:null!==(s=null===(i=this._cappedHeight)||void 0===i?void 0:i.wanted)&&void 0!==s?s:e.height,capped:r}:void 0}this._resize(a,r)}_resize(e,t){const{width:i,height:s}=this.element.maxSize;e=Math.min(i,e),t=Math.min(s,t);const{statusBarHeight:o}=this.getLayoutInfo();this._list.layout(t-o,e),this._listElement.style.height=t-o+"px",this.element.layout(t,e),this._contentWidget.layout(),this._positionDetails()}_positionDetails(){var e;this._isDetailsVisible()&&this._details.placeAtAnchor(this.element.domNode,2===(null===(e=this._contentWidget.getPosition())||void 0===e?void 0:e.preference[0]))}getLayoutInfo(){const e=this.editor.getOption(49),t=(0,ne.uZ)(this.editor.getOption(118)||e.lineHeight,8,1e3),i=this.editor.getOption(116).showStatusBar&&2!==this._state&&1!==this._state?t:0,s=this._details.widget.borderWidth,o=2*s;return{itemHeight:t,statusBarHeight:i,borderWidth:s,borderHeight:o,typicalHalfwidthCharacterWidth:e.typicalHalfwidthCharacterWidth,verticalPadding:22,horizontalPadding:14,defaultSize:new se.Ro(430,i+12*t+o)}}_isDetailsVisible(){return this._storageService.getBoolean("expandSuggestionDocs",0,!1)}_setDetailsVisible(e){this._storageService.store("expandSuggestionDocs",e,0,0)}forceRenderingAbove(){this._forceRenderingAbove||(this._forceRenderingAbove=!0,this._layout(this._persistedSize.restore()))}stopForceRenderingAbove(){this._forceRenderingAbove=!1}};Qe.LOADING_MESSAGE=N.NC("suggestWidget.loading","Loading..."),Qe.NO_SUGGESTIONS_MESSAGE=N.NC("suggestWidget.noSuggestions","No suggestions."),Qe=je([Ke(1,pe.Uy),Ke(2,w.i6),Ke(3,fe.XE),Ke(4,I.TG)],Qe);class Ze{constructor(e,t){this._widget=e,this._editor=t,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._preferenceLocked=!1,this._added=!1,this._hidden=!1}dispose(){this._added&&(this._added=!1,this._editor.removeContentWidget(this))}getId(){return"editor.widget.suggestWidget"}getDomNode(){return this._widget.element.domNode}show(){this._hidden=!1,this._added||(this._added=!0,this._editor.addContentWidget(this))}hide(){this._hidden||(this._hidden=!0,this.layout())}layout(){this._editor.layoutContentWidget(this)}getPosition(){return!this._hidden&&this._position&&this._preference?{position:this._position,preference:[this._preference]}:null}beforeRender(){const{height:e,width:t}=this._widget.element.size,{borderWidth:i,horizontalPadding:s}=this._widget.getLayoutInfo();return new se.Ro(t+2*i+s,e+2*i)}afterRender(e){this._widget._afterRender(e)}setPreference(e){this._preferenceLocked||(this._preference=e)}lockPreference(){this._preferenceLocked=!0}unlockPreference(){this._preferenceLocked=!1}setPosition(e){this._position=e}}var et=i(21230),tt=i(63381),it=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},st=function(e,t){return function(i,s){t(i,s,e)}};const ot=!1;class nt{constructor(e,t){this._model=e,this._position=t;const i=e.getLineMaxColumn(t.lineNumber);if(i!==t.column){const i=e.getOffsetAt(t),s=e.getPositionAt(i+1);this._marker=e.deltaDecorations([],[{range:v.e.fromPositions(t,s),options:{description:"suggest-line-suffix",stickiness:1}}])}}dispose(){this._marker&&!this._model.isDisposed()&&this._model.deltaDecorations(this._marker,[])}delta(e){if(this._model.isDisposed()||this._position.lineNumber!==e.lineNumber)return 0;if(this._marker){const t=this._model.getDecorationRange(this._marker[0]),i=this._model.getOffsetAt(t.getStartPosition());return i-this._model.getOffsetAt(e)}return this._model.getLineMaxColumn(e.lineNumber)-e.column}}let rt=class e{static get(t){return t.getContribution(e.ID)}constructor(e,t,i,s,o,r,a){this._memoryService=t,this._commandService=i,this._contextKeyService=s,this._instantiationService=o,this._logService=r,this._telemetryService=a,this._lineSuffix=new c.XK,this._toDispose=new c.SL,this._selectors=new at((e=>e.priority)),this.editor=e,this.model=o.createInstance(te,this.editor),this._selectors.register({priority:0,select:(e,t,i)=>this._memoryService.select(e,t,i)});const l=R._y.InsertMode.bindTo(s);l.set(e.getOption(116).insertMode),this.model.onDidTrigger((()=>l.set(e.getOption(116).insertMode))),this.widget=this._toDispose.add(new n.Ue((()=>{const e=this._instantiationService.createInstance(Qe,this.editor);this._toDispose.add(e),this._toDispose.add(e.onDidSelect((e=>this._insertSuggestion(e,0)),this));const t=new F(this.editor,e,this.model,(e=>this._insertSuggestion(e,2)));this._toDispose.add(t);const i=R._y.MakesTextEdit.bindTo(this._contextKeyService),s=R._y.HasInsertAndReplaceRange.bindTo(this._contextKeyService),o=R._y.CanResolve.bindTo(this._contextKeyService);return this._toDispose.add((0,c.OF)((()=>{i.reset(),s.reset(),o.reset()}))),this._toDispose.add(e.onDidFocus((({item:e})=>{const t=this.editor.getPosition(),n=e.editStart.column,r=t.column;let a=!0;if("smart"===this.editor.getOption(1)&&2===this.model.state&&!e.completion.additionalTextEdits&&!(4&e.completion.insertTextRules)&&r-n===e.completion.insertText.length){const i=this.editor.getModel().getValueInRange({startLineNumber:t.lineNumber,startColumn:n,endLineNumber:t.lineNumber,endColumn:r});a=i!==e.completion.insertText}i.set(a),s.set(!f.L.equals(e.editInsertEnd,e.editReplaceEnd)),o.set(Boolean(e.provider.resolveCompletionItem)||Boolean(e.completion.documentation)||e.completion.detail!==e.completion.label)}))),this._toDispose.add(e.onDetailsKeyDown((e=>{e.toKeyCodeChord().equals(new d.$M(!0,!1,!1,!1,33))||h.dz&&e.toKeyCodeChord().equals(new d.$M(!1,!1,!1,!0,33))?e.stopPropagation():e.toKeyCodeChord().isModifierKey()||this.editor.focus()}))),e}))),this._overtypingCapturer=this._toDispose.add(new n.Ue((()=>this._toDispose.add(new ie(this.editor,this.model))))),this._alternatives=this._toDispose.add(new n.Ue((()=>this._toDispose.add(new M(this.editor,this._contextKeyService))))),this._toDispose.add(o.createInstance(x,e)),this._toDispose.add(this.model.onDidTrigger((e=>{this.widget.value.showTriggered(e.auto,e.shy?250:50),this._lineSuffix.value=new nt(this.editor.getModel(),e.position)}))),this._toDispose.add(this.model.onDidSuggest((e=>{if(e.triggerOptions.shy)return;let t=-1;for(const s of this._selectors.itemsOrderedByPriorityDesc)if(t=s.select(this.editor.getModel(),this.editor.getPosition(),e.completionModel.items),-1!==t)break;-1===t&&(t=0);let i=!1;if(e.triggerOptions.auto){const t=this.editor.getOption(116);"never"===t.selectionMode||"always"===t.selectionMode?i="never"===t.selectionMode:"whenTriggerCharacter"===t.selectionMode?i=1!==e.triggerOptions.triggerKind:"whenQuickSuggestion"===t.selectionMode&&(i=1===e.triggerOptions.triggerKind&&!e.triggerOptions.refilter)}this.widget.value.showSuggestions(e.completionModel,t,e.isFrozen,e.triggerOptions.auto,i)}))),this._toDispose.add(this.model.onDidCancel((e=>{e.retrigger||this.widget.value.hideWidget()}))),this._toDispose.add(this.editor.onDidBlurEditorWidget((()=>{ot||(this.model.cancel(),this.model.clear())})));const u=R._y.AcceptSuggestionsOnEnter.bindTo(s),g=()=>{const e=this.editor.getOption(1);u.set("on"===e||"smart"===e)};this._toDispose.add(this.editor.onDidChangeConfiguration((()=>g()))),g()}dispose(){this._alternatives.dispose(),this._toDispose.dispose(),this.widget.dispose(),this.model.dispose(),this._lineSuffix.dispose()}_insertSuggestion(e,t){if(!e||!e.item)return this._alternatives.value.reset(),this.model.cancel(),void this.model.clear();if(!this.editor.hasModel())return;const i=S.f.get(this.editor);if(!i)return;const s=this.editor.getModel(),o=s.getAlternativeVersionId(),{item:n}=e,l=[],d=new r.A;1&t||this.editor.pushUndoStop();const c=this.getOverwriteInfo(n,Boolean(8&t));this._memoryService.memorize(s,this.editor.getPosition(),n);const h=n.isResolved;let g=-1,_=-1;if(Array.isArray(n.completion.additionalTextEdits)){this.model.cancel();const e=p.Z.capture(this.editor);this.editor.executeEdits("suggestController.additionalTextEdits.sync",n.completion.additionalTextEdits.map((e=>m.h.replaceMove(v.e.lift(e.range),e.text)))),e.restoreRelativeVerticalPositionOfCursor(this.editor)}else if(!h){const e=new u.G;let i;const o=s.onDidChangeContent((e=>{if(e.isFlush)return d.cancel(),void o.dispose();for(const t of e.changes){const e=v.e.getEndPosition(t.range);i&&!f.L.isBefore(e,i)||(i=e)}})),r=t;t|=2;let a=!1;const c=this.editor.onWillType((()=>{c.dispose(),a=!0,2&r||this.editor.pushUndoStop()}));l.push(n.resolve(d.token).then((()=>{if(!n.completion.additionalTextEdits||d.token.isCancellationRequested)return;if(i&&n.completion.additionalTextEdits.some((e=>f.L.isBefore(i,v.e.getStartPosition(e.range)))))return!1;a&&this.editor.pushUndoStop();const e=p.Z.capture(this.editor);return this.editor.executeEdits("suggestController.additionalTextEdits.async",n.completion.additionalTextEdits.map((e=>m.h.replaceMove(v.e.lift(e.range),e.text)))),e.restoreRelativeVerticalPositionOfCursor(this.editor),!a&&2&r||this.editor.pushUndoStop(),!0})).then((t=>{this._logService.trace("[suggest] async resolving of edits DONE (ms, applied?)",e.elapsed(),t),_=!0===t?1:!1===t?0:-2})).finally((()=>{o.dispose(),c.dispose()})))}let{insertText:b}=n.completion;if(4&n.completion.insertTextRules||(b=y.Yj.escape(b)),this.model.cancel(),i.insert(b,{overwriteBefore:c.overwriteBefore,overwriteAfter:c.overwriteAfter,undoStopBefore:!1,undoStopAfter:!1,adjustWhitespace:!(1&n.completion.insertTextRules),clipboardText:e.model.clipboardText,overtypingCapturer:this._overtypingCapturer.value}),2&t||this.editor.pushUndoStop(),n.completion.command)if(n.completion.command.id===lt.id)this.model.trigger({auto:!0,retrigger:!0});else{const e=new u.G;l.push(this._commandService.executeCommand(n.completion.command.id,...n.completion.command.arguments?[...n.completion.command.arguments]:[]).catch((e=>{n.completion.extensionId?(0,a.Cp)(e):(0,a.dL)(e)})).finally((()=>{g=e.elapsed()})))}4&t&&this._alternatives.value.set(e,(e=>{d.cancel();while(s.canUndo()){o!==s.getAlternativeVersionId()&&s.undo(),this._insertSuggestion(e,3|(8&t?8:0));break}})),this._alertCompletionItem(n),Promise.all(l).finally((()=>{this._reportSuggestionAcceptedTelemetry(n,s,h,g,_),this.model.clear(),d.dispose()}))}_reportSuggestionAcceptedTelemetry(e,t,i,s,o){var n,r,a;0!==Math.floor(100*Math.random())&&this._telemetryService.publicLog2("suggest.acceptedSuggestion",{extensionId:null!==(r=null===(n=e.extensionId)||void 0===n?void 0:n.value)&&void 0!==r?r:"unknown",providerId:null!==(a=e.provider._debugDisplayName)&&void 0!==a?a:"unknown",kind:e.completion.kind,basenameHash:(0,tt.vp)((0,et.EZ)(t.uri)).toString(16),languageId:t.getLanguageId(),fileExtension:(0,et.DZ)(t.uri),resolveInfo:e.provider.resolveCompletionItem?i?1:0:-1,resolveDuration:e.resolveDuration,commandDuration:s,additionalEditsAsync:o})}getOverwriteInfo(e,t){(0,g.p_)(this.editor.hasModel());let i="replace"===this.editor.getOption(116).insertMode;t&&(i=!i);const s=e.position.column-e.editStart.column,o=(i?e.editReplaceEnd.column:e.editInsertEnd.column)-e.position.column,n=this.editor.getPosition().column-e.position.column,r=this._lineSuffix.value?this._lineSuffix.value.delta(this.editor.getPosition()):0;return{overwriteBefore:s+n,overwriteAfter:o+r}}_alertCompletionItem(e){if((0,o.Of)(e.completion.additionalTextEdits)){const t=N.NC("aria.alert.snippet","Accepting '{0}' made {1} additional edits",e.textLabel,e.completion.additionalTextEdits.length);(0,s.Z9)(t)}}triggerSuggest(e,t,i){this.editor.hasModel()&&(this.model.trigger({auto:null!==t&&void 0!==t&&t,completionOptions:{providerFilter:e,kindFilter:i?new Set:void 0}}),this.editor.revealPosition(this.editor.getPosition(),0),this.editor.focus())}triggerSuggestAndAcceptBest(e){if(!this.editor.hasModel())return;const t=this.editor.getPosition(),i=()=>{t.equals(this.editor.getPosition())&&this._commandService.executeCommand(e.fallback)},s=e=>{if(4&e.completion.insertTextRules||e.completion.additionalTextEdits)return!0;const t=this.editor.getPosition(),i=e.editStart.column,s=t.column;if(s-i!==e.completion.insertText.length)return!0;const o=this.editor.getModel().getValueInRange({startLineNumber:t.lineNumber,startColumn:i,endLineNumber:t.lineNumber,endColumn:s});return o!==e.completion.insertText};l.ju.once(this.model.onDidTrigger)((e=>{const t=[];l.ju.any(this.model.onDidTrigger,this.model.onDidCancel)((()=>{(0,c.B9)(t),i()}),void 0,t),this.model.onDidSuggest((({completionModel:e})=>{if((0,c.B9)(t),0===e.items.length)return void i();const o=this._memoryService.select(this.editor.getModel(),this.editor.getPosition(),e.items),n=e.items[o];s(n)?(this.editor.pushUndoStop(),this._insertSuggestion({index:o,item:n,model:e},7)):i()}),void 0,t)})),this.model.trigger({auto:!1,shy:!0}),this.editor.revealPosition(t,0),this.editor.focus()}acceptSelectedSuggestion(e,t){const i=this.widget.value.getFocusedItem();let s=0;e&&(s|=4),t&&(s|=8),this._insertSuggestion(i,s)}acceptNextSuggestion(){this._alternatives.value.next()}acceptPrevSuggestion(){this._alternatives.value.prev()}cancelSuggestWidget(){this.model.cancel(),this.model.clear(),this.widget.value.hideWidget()}focusSuggestion(){this.widget.value.focusSelected()}selectNextSuggestion(){this.widget.value.selectNext()}selectNextPageSuggestion(){this.widget.value.selectNextPage()}selectLastSuggestion(){this.widget.value.selectLast()}selectPrevSuggestion(){this.widget.value.selectPrevious()}selectPrevPageSuggestion(){this.widget.value.selectPreviousPage()}selectFirstSuggestion(){this.widget.value.selectFirst()}toggleSuggestionDetails(){this.widget.value.toggleDetails()}toggleExplainMode(){this.widget.value.toggleExplainMode()}toggleSuggestionFocus(){this.widget.value.toggleDetailsFocus()}resetWidgetSize(){this.widget.value.resetPersistedSize()}forceRenderingAbove(){this.widget.value.forceRenderingAbove()}stopForceRenderingAbove(){this.widget.isInitialized&&this.widget.value.stopForceRenderingAbove()}registerSelector(e){return this._selectors.register(e)}};rt.ID="editor.contrib.suggestController",rt=it([st(1,C.Fh),st(2,T.H),st(3,w.i6),st(4,I.TG),st(5,L.VZ),st(6,G.b)],rt);class at{constructor(e){this.prioritySelector=e,this._items=new Array}register(e){if(-1!==this._items.indexOf(e))throw new Error("Value is already registered");return this._items.push(e),this._items.sort(((e,t)=>this.prioritySelector(t)-this.prioritySelector(e))),{dispose:()=>{const t=this._items.indexOf(e);t>=0&&this._items.splice(t,1)}}}get itemsOrderedByPriorityDesc(){return this._items}}class lt extends _.R6{constructor(){super({id:lt.id,label:N.NC("suggest.trigger.label","Trigger Suggest"),alias:"Trigger Suggest",precondition:w.Ao.and(b.u.writable,b.u.hasCompletionItemProvider,R._y.Visible.toNegated()),kbOpts:{kbExpr:b.u.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[521,2087]},weight:100}})}run(e,t,i){const s=rt.get(t);if(!s)return;let o;i&&"object"===typeof i&&!0===i.auto&&(o=!0),s.triggerSuggest(void 0,o,void 0)}}lt.id="editor.action.triggerSuggest",(0,_._K)(rt.ID,rt,2),(0,_.Qr)(lt);const dt=190,ct=_._l.bindToContribution(rt.get);(0,_.fK)(new ct({id:"acceptSelectedSuggestion",precondition:w.Ao.and(R._y.Visible,R._y.HasFocusedSuggestion),handler(e){e.acceptSelectedSuggestion(!0,!1)},kbOpts:[{primary:2,kbExpr:w.Ao.and(R._y.Visible,b.u.textInputFocus),weight:dt},{primary:3,kbExpr:w.Ao.and(R._y.Visible,b.u.textInputFocus,R._y.AcceptSuggestionsOnEnter,R._y.MakesTextEdit),weight:dt}],menuOpts:[{menuId:R.GI,title:N.NC("accept.insert","Insert"),group:"left",order:1,when:R._y.HasInsertAndReplaceRange.toNegated()},{menuId:R.GI,title:N.NC("accept.insert","Insert"),group:"left",order:1,when:w.Ao.and(R._y.HasInsertAndReplaceRange,R._y.InsertMode.isEqualTo("insert"))},{menuId:R.GI,title:N.NC("accept.replace","Replace"),group:"left",order:1,when:w.Ao.and(R._y.HasInsertAndReplaceRange,R._y.InsertMode.isEqualTo("replace"))}]})),(0,_.fK)(new ct({id:"acceptAlternativeSelectedSuggestion",precondition:w.Ao.and(R._y.Visible,b.u.textInputFocus,R._y.HasFocusedSuggestion),kbOpts:{weight:dt,kbExpr:b.u.textInputFocus,primary:1027,secondary:[1026]},handler(e){e.acceptSelectedSuggestion(!1,!0)},menuOpts:[{menuId:R.GI,group:"left",order:2,when:w.Ao.and(R._y.HasInsertAndReplaceRange,R._y.InsertMode.isEqualTo("insert")),title:N.NC("accept.replace","Replace")},{menuId:R.GI,group:"left",order:2,when:w.Ao.and(R._y.HasInsertAndReplaceRange,R._y.InsertMode.isEqualTo("replace")),title:N.NC("accept.insert","Insert")}]})),T.P.registerCommandAlias("acceptSelectedSuggestionOnEnter","acceptSelectedSuggestion"),(0,_.fK)(new ct({id:"hideSuggestWidget",precondition:R._y.Visible,handler:e=>e.cancelSuggestWidget(),kbOpts:{weight:dt,kbExpr:b.u.textInputFocus,primary:9,secondary:[1033]}})),(0,_.fK)(new ct({id:"selectNextSuggestion",precondition:w.Ao.and(R._y.Visible,w.Ao.or(R._y.MultipleSuggestions,R._y.HasFocusedSuggestion.negate())),handler:e=>e.selectNextSuggestion(),kbOpts:{weight:dt,kbExpr:b.u.textInputFocus,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}})),(0,_.fK)(new ct({id:"selectNextPageSuggestion",precondition:w.Ao.and(R._y.Visible,w.Ao.or(R._y.MultipleSuggestions,R._y.HasFocusedSuggestion.negate())),handler:e=>e.selectNextPageSuggestion(),kbOpts:{weight:dt,kbExpr:b.u.textInputFocus,primary:12,secondary:[2060]}})),(0,_.fK)(new ct({id:"selectLastSuggestion",precondition:w.Ao.and(R._y.Visible,w.Ao.or(R._y.MultipleSuggestions,R._y.HasFocusedSuggestion.negate())),handler:e=>e.selectLastSuggestion()})),(0,_.fK)(new ct({id:"selectPrevSuggestion",precondition:w.Ao.and(R._y.Visible,w.Ao.or(R._y.MultipleSuggestions,R._y.HasFocusedSuggestion.negate())),handler:e=>e.selectPrevSuggestion(),kbOpts:{weight:dt,kbExpr:b.u.textInputFocus,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}})),(0,_.fK)(new ct({id:"selectPrevPageSuggestion",precondition:w.Ao.and(R._y.Visible,w.Ao.or(R._y.MultipleSuggestions,R._y.HasFocusedSuggestion.negate())),handler:e=>e.selectPrevPageSuggestion(),kbOpts:{weight:dt,kbExpr:b.u.textInputFocus,primary:11,secondary:[2059]}})),(0,_.fK)(new ct({id:"selectFirstSuggestion",precondition:w.Ao.and(R._y.Visible,w.Ao.or(R._y.MultipleSuggestions,R._y.HasFocusedSuggestion.negate())),handler:e=>e.selectFirstSuggestion()})),(0,_.fK)(new ct({id:"focusSuggestion",precondition:w.Ao.and(R._y.Visible,R._y.HasFocusedSuggestion.negate()),handler:e=>e.focusSuggestion(),kbOpts:{weight:dt,kbExpr:b.u.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[2087]}}})),(0,_.fK)(new ct({id:"focusAndAcceptSuggestion",precondition:w.Ao.and(R._y.Visible,R._y.HasFocusedSuggestion.negate()),handler:e=>{e.focusSuggestion(),e.acceptSelectedSuggestion(!0,!1)}})),(0,_.fK)(new ct({id:"toggleSuggestionDetails",precondition:w.Ao.and(R._y.Visible,R._y.HasFocusedSuggestion),handler:e=>e.toggleSuggestionDetails(),kbOpts:{weight:dt,kbExpr:b.u.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[2087]}},menuOpts:[{menuId:R.GI,group:"right",order:1,when:w.Ao.and(R._y.DetailsVisible,R._y.CanResolve),title:N.NC("detail.more","show less")},{menuId:R.GI,group:"right",order:1,when:w.Ao.and(R._y.DetailsVisible.toNegated(),R._y.CanResolve),title:N.NC("detail.less","show more")}]})),(0,_.fK)(new ct({id:"toggleExplainMode",precondition:R._y.Visible,handler:e=>e.toggleExplainMode(),kbOpts:{weight:100,primary:2138}})),(0,_.fK)(new ct({id:"toggleSuggestionFocus",precondition:R._y.Visible,handler:e=>e.toggleSuggestionFocus(),kbOpts:{weight:dt,kbExpr:b.u.textInputFocus,primary:2570,mac:{primary:778}}})),(0,_.fK)(new ct({id:"insertBestCompletion",precondition:w.Ao.and(b.u.textInputFocus,w.Ao.equals("config.editor.tabCompletion","on"),x.AtEnd,R._y.Visible.toNegated(),M.OtherSuggestions.toNegated(),S.f.InSnippetMode.toNegated()),handler:(e,t)=>{e.triggerSuggestAndAcceptBest((0,g.Kn)(t)?Object.assign({fallback:"tab"},t):{fallback:"tab"})},kbOpts:{weight:dt,primary:2}})),(0,_.fK)(new ct({id:"insertNextSuggestion",precondition:w.Ao.and(b.u.textInputFocus,w.Ao.equals("config.editor.tabCompletion","on"),M.OtherSuggestions,R._y.Visible.toNegated(),S.f.InSnippetMode.toNegated()),handler:e=>e.acceptNextSuggestion(),kbOpts:{weight:dt,kbExpr:b.u.textInputFocus,primary:2}})),(0,_.fK)(new ct({id:"insertPrevSuggestion",precondition:w.Ao.and(b.u.textInputFocus,w.Ao.equals("config.editor.tabCompletion","on"),M.OtherSuggestions,R._y.Visible.toNegated(),S.f.InSnippetMode.toNegated()),handler:e=>e.acceptPrevSuggestion(),kbOpts:{weight:dt,kbExpr:b.u.textInputFocus,primary:1026}})),(0,_.Qr)(class extends _.R6{constructor(){super({id:"editor.action.resetSuggestSize",label:N.NC("suggest.reset.label","Reset Suggest Widget Size"),alias:"Reset Suggest Widget Size",precondition:void 0})}run(e,t){var i;null===(i=rt.get(t))||void 0===i||i.resetWidgetSize()}})},46072:(e,t,i)=>{var s=i(55191),o=i(70546),n=i(39595),r=i(70959),a=i(48077),l=i(35195),d=i(33162),c=i(16458),h=i(50930),u=i(49864),g=i(1600),p=i(2903),_=i(2827),m=i(21881),f=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},v=function(e,t){return function(i,s){t(i,s,e)}},b=function(e,t,i,s){function o(e){return e instanceof i?e:new i((function(t){t(e)}))}return new(i||(i=Promise))((function(i,n){function r(e){try{l(s.next(e))}catch(t){n(t)}}function a(e){try{l(s["throw"](e))}catch(t){n(t)}}function l(e){e.done?i(e.value):o(e.value).then(r,a)}l((s=s.apply(e,t||[])).next())}))};class S{constructor(e,t,i,s,o,n){this.range=e,this.insertText=t,this.filterText=i,this.additionalTextEdits=s,this.command=o,this.completion=n}}let y=class extends r.L6{constructor(e,t,i,s,o,n){super(o.disposable),this.model=e,this.line=t,this.word=i,this.completionModel=s,this._suggestMemoryService=n}canBeReused(e,t,i){return this.model===e&&this.line===t&&this.word.word.length>0&&this.word.startColumn===i.startColumn&&this.word.endColumn=0&&h.resolve(s.T.None)}return t}};y=f([v(5,g.Fh)],y);let C=class{constructor(e,t,i,s){this._getEditorOption=e,this._languageFeatureService=t,this._clipboardService=i,this._suggestMemoryService=s}provideInlineCompletions(e,t,i,s){var o;return b(this,void 0,void 0,(function*(){if(i.selectedSuggestionInfo)return;const n=this._getEditorOption(87,e);if(u.tG.isAllOff(n))return;e.tokenization.tokenizeIfCheap(t.lineNumber);const r=e.tokenization.getLineTokens(t.lineNumber),a=r.getStandardTokenType(r.findTokenIndexAtOffset(Math.max(t.column-1-1,0)));if("inline"!==u.tG.valueFor(n,a))return;let l,c,g=e.getWordAtPosition(t);if((null===g||void 0===g?void 0:g.word)||(l=this._getTriggerCharacterInfo(e,t)),!(null===g||void 0===g?void 0:g.word)&&!l)return;if(g||(g=e.getWordUntilPosition(t)),g.endColumn!==t.column)return;const _=e.getValueInRange(new d.e(t.lineNumber,1,t.lineNumber,t.column));if(!l&&(null===(o=this._lastResult)||void 0===o?void 0:o.canBeReused(e,t.lineNumber,g))){const e=new h.t(_,t.column-this._lastResult.word.endColumn);this._lastResult.completionModel.lineContext=e,this._lastResult.acquire(),c=this._lastResult}else{const i=yield(0,u.kL)(this._languageFeatureService.completionProvider,e,t,new u.A9(void 0,void 0,null===l||void 0===l?void 0:l.providers),l&&{triggerKind:1,triggerCharacter:l.ch},s);let o;i.needsClipboard&&(o=yield this._clipboardService.readText());const n=new h._(i.items,t.column,new h.t(_,0),p.K.None,this._getEditorOption(116,e),this._getEditorOption(110,e),{boostFullMatch:!1,firstMatchCanBeWeak:!1},o);c=new y(e,t.lineNumber,g,n,i,this._suggestMemoryService)}return this._lastResult=c,c}))}handleItemDidShow(e,t){t.completion.resolve(s.T.None)}freeInlineCompletions(e){e.release()}_getTriggerCharacterInfo(e,t){var i;const s=e.getValueInRange(d.e.fromPositions({lineNumber:t.lineNumber,column:t.column-1},t)),o=new Set;for(const n of this._languageFeatureService.completionProvider.all(e))(null===(i=n.triggerCharacters)||void 0===i?void 0:i.includes(s))&&o.add(n);if(0!==o.size)return{providers:o,ch:s}}};C=f([v(1,c.p),v(2,_.p),v(3,g.Fh)],C);let w=class e{constructor(t,i,s,o){if(1===++e._counter){const n=o.createInstance(C,((e,i)=>{var o;const n=null!==(o=s.listCodeEditors().find((e=>e.getModel()===i)))&&void 0!==o?o:t;return n.getOption(e)}));e._disposable=i.inlineCompletionsProvider.register("*",n)}}dispose(){var t;0===--e._counter&&(null===(t=e._disposable)||void 0===t||t.dispose(),e._disposable=void 0)}};w._counter=0,w=f([v(1,c.p),v(2,l.$),v(3,m.TG)],w),(0,a._K)("suggest.inlineCompletionsProvider",w,0)},1600:(e,t,i)=>{i.d(t,{Fh:()=>b});var s=i(85398),o=i(70959),n=i(71400),r=i(17141),a=i(67026),l=i(47596),d=i(39326),c=i(21881),h=i(51906),u=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},g=function(e,t){return function(i,s){t(i,s,e)}};class p{constructor(e){this.name=e}select(e,t,i){if(0===i.length)return 0;const s=i[0].score[0];for(let o=0;oa&&s.type===i[l].completion.kind&&s.insertText===i[l].completion.insertText&&(a=s.touch,r=l),i[l].completion.preselect&&-1===n)return l}return-1!==r?r:-1!==n?n:0}toJSON(){return this._cache.toJSON()}fromJSON(e){this._cache.clear();const t=0;for(const[i,s]of e)s.touch=t,s.type="number"===typeof s.type?s.type:a.gX.fromString(s.type),this._cache.set(i,s);this._seq=this._cache.size}}class f extends p{constructor(){super("recentlyUsedByPrefix"),this._trie=r.Id.forStrings(),this._seq=0}memorize(e,t,i){const{word:s}=e.getWordUntilPosition(t),o=`${e.getLanguageId()}/${s}`;this._trie.set(o,{type:i.completion.kind,insertText:i.completion.insertText,touch:this._seq++})}select(e,t,i){const{word:s}=e.getWordUntilPosition(t);if(!s)return super.select(e,t,i);const o=`${e.getLanguageId()}/${s}`;let n=this._trie.get(o);if(n||(n=this._trie.findSubstr(o)),n)for(let r=0;re.push([i,t]))),e.sort(((e,t)=>-(e[1].touch-t[1].touch))).forEach(((e,t)=>e[1].touch=t)),e.slice(0,200)}fromJSON(e){if(this._trie.clear(),e.length>0){this._seq=e[0][1].touch+1;for(const[t,i]of e)i.type="number"===typeof i.type?i.type:a.gX.fromString(i.type),this._trie.set(t,i)}}}let v=class e{constructor(e,t){this._storageService=e,this._configService=t,this._disposables=new o.SL,this._persistSoon=new s.pY((()=>this._saveState()),500),this._disposables.add(e.onWillSaveState((e=>{e.reason===h.fk.SHUTDOWN&&this._saveState()})))}dispose(){this._disposables.dispose(),this._persistSoon.dispose()}memorize(e,t,i){this._withStrategy(e,t).memorize(e,t,i),this._persistSoon.schedule()}select(e,t,i){return this._withStrategy(e,t).select(e,t,i)}_withStrategy(t,i){var s;const o=this._configService.getValue("editor.suggestSelection",{overrideIdentifier:t.getLanguageIdAtPosition(i.lineNumber,i.column),resource:t.uri});if((null===(s=this._strategy)||void 0===s?void 0:s.name)!==o){this._saveState();const t=e._strategyCtors.get(o)||_;this._strategy=new t;try{const t=this._configService.getValue("editor.suggest.shareSuggestSelections"),i=t?0:1,s=this._storageService.get(`${e._storagePrefix}/${o}`,i);s&&this._strategy.fromJSON(JSON.parse(s))}catch(n){}}return this._strategy}_saveState(){if(this._strategy){const t=this._configService.getValue("editor.suggest.shareSuggestSelections"),i=t?0:1,s=JSON.stringify(this._strategy);this._storageService.store(`${e._storagePrefix}/${this._strategy.name}`,s,i,1)}}};v._strategyCtors=new Map([["recentlyUsedByPrefix",f],["recentlyUsed",m],["first",_]]),v._storagePrefix="suggest/memories",v=u([g(0,h.Uy),g(1,l.Ui)],v);const b=(0,c.yh)("ISuggestMemories");(0,d.z)(b,v,1)},2903:(e,t,i)=>{i.d(t,{K:()=>c});var s=i(21921),o=i(33162),n=i(33010),r=i(89999),a=function(e,t,i,s){function o(e){return e instanceof i?e:new i((function(t){t(e)}))}return new(i||(i=Promise))((function(i,n){function r(e){try{l(s.next(e))}catch(t){n(t)}}function a(e){try{l(s["throw"](e))}catch(t){n(t)}}function l(e){e.done?i(e.value):o(e.value).then(r,a)}l((s=s.apply(e,t||[])).next())}))};class l{provideSelectionRanges(e,t){return a(this,void 0,void 0,(function*(){const i=[];for(const s of t){const t=[];i.push(t);const o=new Map;yield new Promise((t=>l._bracketsRightYield(t,0,e,s,o))),yield new Promise((i=>l._bracketsLeftYield(i,0,e,s,o,t)))}return i}))}static _bracketsRightYield(e,t,i,s,o){const r=new Map,a=Date.now();while(1){if(t>=l._maxRounds){e();break}if(!s){e();break}const d=i.bracketPairs.findNextBracket(s);if(!d){e();break}const c=Date.now()-a;if(c>l._maxDuration){setTimeout((()=>l._bracketsRightYield(e,t+1,i,s,o)));break}if(d.bracketInfo.isOpeningBracket){const e=d.bracketInfo.bracketText,t=r.has(e)?r.get(e):0;r.set(e,t+1)}else{const e=d.bracketInfo.getOpeningBrackets()[0].bracketText;let t=r.has(e)?r.get(e):0;if(t-=1,r.set(e,Math.max(0,t)),t<0){let t=o.get(e);t||(t=new n.S,o.set(e,t)),t.push(d.range)}}s=d.range.getEndPosition()}}static _bracketsLeftYield(e,t,i,s,n,r){const a=new Map,d=Date.now();while(1){if(t>=l._maxRounds&&0===n.size){e();break}if(!s){e();break}const c=i.bracketPairs.findPrevBracket(s);if(!c){e();break}const h=Date.now()-d;if(h>l._maxDuration){setTimeout((()=>l._bracketsLeftYield(e,t+1,i,s,n,r)));break}if(c.bracketInfo.isOpeningBracket){const e=c.bracketInfo.bracketText;let t=a.has(e)?a.get(e):0;if(t-=1,a.set(e,Math.max(0,t)),t<0){const t=n.get(e);if(t){const s=t.shift();0===t.size&&n.delete(e);const a=o.e.fromPositions(c.range.getEndPosition(),s.getStartPosition()),d=o.e.fromPositions(c.range.getStartPosition(),s.getEndPosition());r.push({range:a}),r.push({range:d}),l._addBracketLeading(i,d,r)}}}else{const e=c.bracketInfo.getOpeningBrackets()[0].bracketText,t=a.has(e)?a.get(e):0;a.set(e,t+1)}s=c.range.getStartPosition()}}static _addBracketLeading(e,t,i){if(t.startLineNumber===t.endLineNumber)return;const s=t.startLineNumber,n=e.getLineFirstNonWhitespaceColumn(s);0!==n&&n!==t.startColumn&&(i.push({range:o.e.fromPositions(new r.L(s,n),t.getEndPosition())}),i.push({range:o.e.fromPositions(new r.L(s,1),t.getEndPosition())}));const a=s-1;if(a>0){const s=e.getLineFirstNonWhitespaceColumn(a);s===t.startColumn&&s!==e.getLineLastNonWhitespaceColumn(a)&&(i.push({range:o.e.fromPositions(new r.L(a,s),t.getEndPosition())}),i.push({range:o.e.fromPositions(new r.L(a,1),t.getEndPosition())}))}}}l._maxDuration=30,l._maxRounds=2;var d=function(e,t,i,s){function o(e){return e instanceof i?e:new i((function(t){t(e)}))}return new(i||(i=Promise))((function(i,n){function r(e){try{l(s.next(e))}catch(t){n(t)}}function a(e){try{l(s["throw"](e))}catch(t){n(t)}}function l(e){e.done?i(e.value):o(e.value).then(r,a)}l((s=s.apply(e,t||[])).next())}))};class c{static create(e,t){return d(this,void 0,void 0,(function*(){if(!t.getOption(116).localityBonus)return c.None;if(!t.hasModel())return c.None;const i=t.getModel(),n=t.getPosition();if(!e.canComputeWordRanges(i.uri))return c.None;const[r]=yield(new l).provideSelectionRanges(i,[n]);if(0===r.length)return c.None;const a=yield e.computeWordRanges(i.uri,r[0].range);if(!a)return c.None;const d=i.getWordUntilPosition(n);return delete a[d.word],new class extends c{distance(e,i){if(!n.equals(t.getPosition()))return 0;if(17===i.kind)return 2<<20;const l="string"===typeof i.label?i.label:i.label.label,d=a[l];if((0,s.XY)(d))return 2<<20;const c=(0,s.ry)(d,o.e.fromPositions(e),o.e.compareRangesUsingStarts),h=c>=0?d[c]:d[Math.max(0,~c-1)];let u=r.length;for(const t of r){if(!o.e.containsRange(t.range,h))break;u-=1}return u}}}))}}c.None=new class extends c{distance(){return 0}}},75413:(e,t,i)=>{var s=i(25206),o=i(47277);(0,o.P6G)("symbolIcon.arrayForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.arrayForeground","The foreground color for array symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.booleanForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.booleanForeground","The foreground color for boolean symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.classForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},(0,s.NC)("symbolIcon.classForeground","The foreground color for class symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.colorForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.colorForeground","The foreground color for color symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.constantForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.constantForeground","The foreground color for constant symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.constructorForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},(0,s.NC)("symbolIcon.constructorForeground","The foreground color for constructor symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.enumeratorForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},(0,s.NC)("symbolIcon.enumeratorForeground","The foreground color for enumerator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.enumeratorMemberForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},(0,s.NC)("symbolIcon.enumeratorMemberForeground","The foreground color for enumerator member symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.eventForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},(0,s.NC)("symbolIcon.eventForeground","The foreground color for event symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.fieldForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},(0,s.NC)("symbolIcon.fieldForeground","The foreground color for field symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.fileForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.fileForeground","The foreground color for file symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.folderForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.folderForeground","The foreground color for folder symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.functionForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},(0,s.NC)("symbolIcon.functionForeground","The foreground color for function symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.interfaceForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},(0,s.NC)("symbolIcon.interfaceForeground","The foreground color for interface symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.keyForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.keyForeground","The foreground color for key symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.keywordForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.keywordForeground","The foreground color for keyword symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.methodForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},(0,s.NC)("symbolIcon.methodForeground","The foreground color for method symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.moduleForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.moduleForeground","The foreground color for module symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.namespaceForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.namespaceForeground","The foreground color for namespace symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.nullForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.nullForeground","The foreground color for null symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.numberForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.numberForeground","The foreground color for number symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.objectForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.objectForeground","The foreground color for object symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.operatorForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.operatorForeground","The foreground color for operator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.packageForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.packageForeground","The foreground color for package symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.propertyForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.propertyForeground","The foreground color for property symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.referenceForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.referenceForeground","The foreground color for reference symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.snippetForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.snippetForeground","The foreground color for snippet symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.stringForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.stringForeground","The foreground color for string symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.structForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.structForeground","The foreground color for struct symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.textForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.textForeground","The foreground color for text symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.typeParameterForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.typeParameterForeground","The foreground color for type parameter symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.unitForeground",{dark:o.dRz,light:o.dRz,hcDark:o.dRz,hcLight:o.dRz},(0,s.NC)("symbolIcon.unitForeground","The foreground color for unit symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),(0,o.P6G)("symbolIcon.variableForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},(0,s.NC)("symbolIcon.variableForeground","The foreground color for variable symbols. These symbols appear in the outline, breadcrumb, and suggest widget."))},7614:(e,t,i)=>{var s=i(96729),o=i(48077),n=i(25206);class r extends o.R6{constructor(){super({id:"editor.action.forceRetokenize",label:n.NC("forceRetokenize","Developer: Force Retokenize"),alias:"Developer: Force Retokenize",precondition:void 0})}run(e,t){if(!t.hasModel())return;const i=t.getModel();i.tokenization.resetTokenization();const o=new s.G;i.tokenization.forceTokenization(i.getLineCount()),o.stop(),console.log(`tokenization took ${o.elapsed()}`)}}(0,o.Qr)(r)},32574:(e,t,i)=>{var s=i(85398),o=i(8419),n=i(81478),r=i(70959),a=i(47606),l=i(61720),d=i(48077),c=i(93215),h=i(16375),u=i(20353),g=i(52473),p=i(61141),_=i(45686),m=i(97791),f=i(25903),v=i(2548),b=i(78089),S=i(10205),y=i(92767),C=i(21881),w=i(67871),k=i(98158),D=i(99588),x=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},N=function(e,t){return function(i,s){t(i,s,e)}};const T=26;let I=class extends r.JT{constructor(e,t){super(),this._editor=e,this.instantiationService=t,this.banner=this._register(this.instantiationService.createInstance(L))}hide(){this._editor.setBanner(null,0),this.banner.clear()}show(e){this.banner.show(Object.assign(Object.assign({},e),{onClose:()=>{var t;this.hide(),null===(t=e.onClose)||void 0===t||t.call(e)}})),this._editor.setBanner(this.banner.element,T)}};I=x([N(1,C.TG)],I);let L=class extends r.JT{constructor(e){super(),this.instantiationService=e,this.markdownRenderer=this.instantiationService.createInstance(y.$,{}),this.element=(0,v.$)("div.editor-banner"),this.element.tabIndex=0}getAriaLabel(e){return e.ariaLabel?e.ariaLabel:"string"===typeof e.message?e.message:void 0}getBannerMessage(e){if("string"===typeof e){const t=(0,v.$)("span");return t.innerText=e,t}return this.markdownRenderer.render(e).element}clear(){(0,v.PO)(this.element)}show(e){(0,v.PO)(this.element);const t=this.getAriaLabel(e);t&&this.element.setAttribute("aria-label",t);const i=(0,v.R3)(this.element,(0,v.$)("div.icon-container"));i.setAttribute("aria-hidden","true"),e.icon&&i.appendChild((0,v.$)(`div${D.k.asCSSSelector(e.icon)}`));const s=(0,v.R3)(this.element,(0,v.$)("div.message-container"));if(s.setAttribute("aria-hidden","true"),s.appendChild(this.getBannerMessage(e.message)),this.messageActionsContainer=(0,v.R3)(this.element,(0,v.$)("div.message-actions-container")),e.actions)for(const n of e.actions)this._register(this.instantiationService.createInstance(w.r,this.messageActionsContainer,Object.assign(Object.assign({},n),{tabIndex:-1}),{}));const o=(0,v.R3)(this.element,(0,v.$)("div.action-container"));this.actionBar=this._register(new b.o(o)),this.actionBar.push(this._register(new S.aU("banner.close","Close Banner",D.k.asClassName(k.s_),!0,(()=>{"function"===typeof e.onClose&&e.onClose()}))),{icon:!0,label:!1}),this.actionBar.setFocusable(!1)}};L=x([N(0,C.TG)],L);var R=i(25206),P=i(47596),E=i(6544),M=i(45726),O=i(8625),F=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},A=function(e,t){return function(i,s){t(i,s,e)}},z=function(e,t,i,s){function o(e){return e instanceof i?e:new i((function(t){t(e)}))}return new(i||(i=Promise))((function(i,n){function r(e){try{l(s.next(e))}catch(t){n(t)}}function a(e){try{l(s["throw"](e))}catch(t){n(t)}}function l(e){e.done?i(e.value):o(e.value).then(r,a)}l((s=s.apply(e,t||[])).next())}))};const H=(0,k.q5)("extensions-warning-message",o.l.warning,R.NC("warningIcon","Icon shown with a warning message in the extensions editor."));let W=class extends r.JT{constructor(e,t,i,s){super(),this._editor=e,this._editorWorkerService=t,this._workspaceTrustService=i,this._highlighter=null,this._bannerClosed=!1,this._updateState=e=>{if(e&&e.hasMore){if(this._bannerClosed)return;const t=Math.max(e.ambiguousCharacterCount,e.nonBasicAsciiCharacterCount,e.invisibleCharacterCount);let i;if(e.nonBasicAsciiCharacterCount>=t)i={message:R.NC("unicodeHighlighting.thisDocumentHasManyNonBasicAsciiUnicodeCharacters","This document contains many non-basic ASCII unicode characters"),command:new ee};else if(e.ambiguousCharacterCount>=t)i={message:R.NC("unicodeHighlighting.thisDocumentHasManyAmbiguousUnicodeCharacters","This document contains many ambiguous unicode characters"),command:new Q};else{if(!(e.invisibleCharacterCount>=t))throw new Error("Unreachable");i={message:R.NC("unicodeHighlighting.thisDocumentHasManyInvisibleUnicodeCharacters","This document contains many invisible unicode characters"),command:new Z}}this._bannerController.show({id:"unicodeHighlightBanner",message:i.message,icon:H,actions:[{label:i.command.shortLabel,href:`command:${i.command.id}`}],onClose:()=>{this._bannerClosed=!0}})}else this._bannerController.hide()},this._bannerController=this._register(s.createInstance(I,e)),this._register(this._editor.onDidChangeModel((()=>{this._bannerClosed=!1,this._updateHighlighter()}))),this._options=e.getOption(123),this._register(i.onDidChangeTrust((e=>{this._updateHighlighter()}))),this._register(e.onDidChangeConfiguration((t=>{t.hasChanged(123)&&(this._options=e.getOption(123),this._updateHighlighter())}))),this._updateHighlighter()}dispose(){this._highlighter&&(this._highlighter.dispose(),this._highlighter=null),super.dispose()}_updateHighlighter(){if(this._updateState(null),this._highlighter&&(this._highlighter.dispose(),this._highlighter=null),!this._editor.hasModel())return;const e=V(this._workspaceTrustService.isWorkspaceTrusted(),this._options);if([e.nonBasicASCII,e.ambiguousCharacters,e.invisibleCharacters].every((e=>!1===e)))return;const t={nonBasicASCII:e.nonBasicASCII,ambiguousCharacters:e.ambiguousCharacters,invisibleCharacters:e.invisibleCharacters,includeComments:e.includeComments,includeStrings:e.includeStrings,allowedCodePoints:Object.keys(e.allowedCharacters).map((e=>e.codePointAt(0))),allowedLocales:Object.keys(e.allowedLocales).map((e=>{if("_os"===e){const e=(new Intl.NumberFormat).resolvedOptions().locale;return e}return"_vscode"===e?a.dK:e}))};this._editorWorkerService.canComputeUnicodeHighlights(this._editor.getModel().uri)?this._highlighter=new B(this._editor,t,this._updateState,this._editorWorkerService):this._highlighter=new G(this._editor,t,this._updateState)}getDecorationInfo(e){return this._highlighter?this._highlighter.getDecorationInfo(e):null}};function V(e,t){return{nonBasicASCII:t.nonBasicASCII===c.Av?!e:t.nonBasicASCII,ambiguousCharacters:t.ambiguousCharacters,invisibleCharacters:t.invisibleCharacters,includeComments:t.includeComments===c.Av?!e:t.includeComments,includeStrings:t.includeStrings===c.Av?!e:t.includeStrings,allowedCharacters:t.allowedCharacters,allowedLocales:t.allowedLocales}}W.ID="editor.contrib.unicodeHighlighter",W=F([A(1,g.p),A(2,O.Y),A(3,C.TG)],W);let B=class extends r.JT{constructor(e,t,i,o){super(),this._editor=e,this._options=t,this._updateState=i,this._editorWorkerService=o,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new s.pY((()=>this._update()),250)),this._register(this._editor.onDidChangeModelContent((()=>{this._updateSoon.schedule()}))),this._updateSoon.schedule()}dispose(){this._decorations.clear(),super.dispose()}_update(){if(this._model.isDisposed())return;if(!this._model.mightContainNonBasicASCII())return void this._decorations.clear();const e=this._model.getVersionId();this._editorWorkerService.computedUnicodeHighlights(this._model.uri,this._options).then((t=>{if(this._model.isDisposed())return;if(this._model.getVersionId()!==e)return;this._updateState(t);const i=[];if(!t.hasMore)for(const e of t.ranges)i.push({range:e,options:J.instance.getDecorationFromOptions(this._options)});this._decorations.set(i)}))}getDecorationInfo(e){if(!this._decorations.has(e))return null;const t=this._editor.getModel();if(!(0,_.Fd)(t,e))return null;const i=t.getValueInRange(e.range);return{reason:q(i,this._options),inComment:(0,_.$t)(t,e),inString:(0,_.zg)(t,e)}}};B=F([A(3,g.p)],B);class G extends r.JT{constructor(e,t,i){super(),this._editor=e,this._options=t,this._updateState=i,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new s.pY((()=>this._update()),250)),this._register(this._editor.onDidLayoutChange((()=>{this._updateSoon.schedule()}))),this._register(this._editor.onDidScrollChange((()=>{this._updateSoon.schedule()}))),this._register(this._editor.onDidChangeHiddenAreas((()=>{this._updateSoon.schedule()}))),this._register(this._editor.onDidChangeModelContent((()=>{this._updateSoon.schedule()}))),this._updateSoon.schedule()}dispose(){this._decorations.clear(),super.dispose()}_update(){if(this._model.isDisposed())return;if(!this._model.mightContainNonBasicASCII())return void this._decorations.clear();const e=this._editor.getVisibleRanges(),t=[],i={ranges:[],ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0,hasMore:!1};for(const s of e){const e=u.a.computeUnicodeHighlights(this._model,this._options,s);for(const t of e.ranges)i.ranges.push(t);i.ambiguousCharacterCount+=i.ambiguousCharacterCount,i.invisibleCharacterCount+=i.invisibleCharacterCount,i.nonBasicAsciiCharacterCount+=i.nonBasicAsciiCharacterCount,i.hasMore=i.hasMore||e.hasMore}if(!i.hasMore)for(const s of i.ranges)t.push({range:s,options:J.instance.getDecorationFromOptions(this._options)});this._updateState(i),this._decorations.set(t)}getDecorationInfo(e){if(!this._decorations.has(e))return null;const t=this._editor.getModel(),i=t.getValueInRange(e.range);return(0,_.Fd)(t,e)?{reason:q(i,this._options),inComment:(0,_.$t)(t,e),inString:(0,_.zg)(t,e)}:null}}let U=class{constructor(e,t,i){this._editor=e,this._languageService=t,this._openerService=i,this.hoverOrdinal=5}computeSync(e,t){if(!this._editor.hasModel()||1!==e.type)return[];const i=this._editor.getModel(),s=this._editor.getContribution(W.ID);if(!s)return[];const o=[],r=new Set;let a=300;for(const d of t){const e=s.getDecorationInfo(d);if(!e)continue;const t=i.getValueInRange(d.range),c=t.codePointAt(0),h=j(c);let u;switch(e.reason.kind){case 0:u=(0,l.$i)(e.reason.confusableWith)?R.NC("unicodeHighlight.characterIsAmbiguousASCII","The character {0} could be confused with the ASCII character {1}, which is more common in source code.",h,j(e.reason.confusableWith.codePointAt(0))):R.NC("unicodeHighlight.characterIsAmbiguous","The character {0} could be confused with the character {1}, which is more common in source code.",h,j(e.reason.confusableWith.codePointAt(0)));break;case 1:u=R.NC("unicodeHighlight.characterIsInvisible","The character {0} is invisible.",h);break;case 2:u=R.NC("unicodeHighlight.characterIsNonBasicAscii","The character {0} is not a basic ASCII character.",h);break}if(r.has(u))continue;r.add(u);const g={codePoint:c,reason:e.reason,inComment:e.inComment,inString:e.inString},p=R.NC("unicodeHighlight.adjustSettings","Adjust settings"),_=`command:${te.ID}?${encodeURIComponent(JSON.stringify(g))}`,m=new n.W5("",!0).appendMarkdown(u).appendText(" ").appendLink(_,p);o.push(new f.hU(this,d.range,[m],!1,a++))}return o}renderHoverParts(e,t){return(0,f.c)(e,t,this._editor,this._languageService,this._openerService)}};function $(e){return`U+${e.toString(16).padStart(4,"0")}`}function j(e){let t=`\`${$(e)}\``;return l.vU.isInvisibleCharacter(e)||(t+=` "${K(e)}"`),t}function K(e){return 96===e?"`` ` ``":"`"+String.fromCodePoint(e)+"`"}function q(e,t){return u.a.computeUnicodeHighlightReason(e,t)}U=F([A(1,p.O),A(2,E.v4)],U);class J{constructor(){this.map=new Map}getDecorationFromOptions(e){return this.getDecoration(!e.includeComments,!e.includeStrings)}getDecoration(e,t){const i=`${e}${t}`;let s=this.map.get(i);return s||(s=h.qx.createDynamic({description:"unicode-highlight",stickiness:1,className:"unicode-highlight",showIfCollapsed:!0,overviewRuler:null,minimap:null,hideInCommentTokens:e,hideInStringTokens:t}),this.map.set(i,s)),s}}J.instance=new J;class Y extends d.R6{constructor(){super({id:Q.ID,label:R.NC("action.unicodeHighlight.disableHighlightingInComments","Disable highlighting of characters in comments"),alias:"Disable highlighting of characters in comments",precondition:void 0}),this.shortLabel=R.NC("unicodeHighlight.disableHighlightingInComments.shortLabel","Disable Highlight In Comments")}run(e,t,i){return z(this,void 0,void 0,(function*(){const t=null===e||void 0===e?void 0:e.get(P.Ui);t&&this.runAction(t)}))}runAction(e){return z(this,void 0,void 0,(function*(){yield e.updateValue(c.qt.includeComments,!1,2)}))}}class X extends d.R6{constructor(){super({id:Q.ID,label:R.NC("action.unicodeHighlight.disableHighlightingInStrings","Disable highlighting of characters in strings"),alias:"Disable highlighting of characters in strings",precondition:void 0}),this.shortLabel=R.NC("unicodeHighlight.disableHighlightingInStrings.shortLabel","Disable Highlight In Strings")}run(e,t,i){return z(this,void 0,void 0,(function*(){const t=null===e||void 0===e?void 0:e.get(P.Ui);t&&this.runAction(t)}))}runAction(e){return z(this,void 0,void 0,(function*(){yield e.updateValue(c.qt.includeStrings,!1,2)}))}}class Q extends d.R6{constructor(){super({id:Q.ID,label:R.NC("action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters","Disable highlighting of ambiguous characters"),alias:"Disable highlighting of ambiguous characters",precondition:void 0}),this.shortLabel=R.NC("unicodeHighlight.disableHighlightingOfAmbiguousCharacters.shortLabel","Disable Ambiguous Highlight")}run(e,t,i){return z(this,void 0,void 0,(function*(){const t=null===e||void 0===e?void 0:e.get(P.Ui);t&&this.runAction(t)}))}runAction(e){return z(this,void 0,void 0,(function*(){yield e.updateValue(c.qt.ambiguousCharacters,!1,2)}))}}Q.ID="editor.action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters";class Z extends d.R6{constructor(){super({id:Z.ID,label:R.NC("action.unicodeHighlight.disableHighlightingOfInvisibleCharacters","Disable highlighting of invisible characters"),alias:"Disable highlighting of invisible characters",precondition:void 0}),this.shortLabel=R.NC("unicodeHighlight.disableHighlightingOfInvisibleCharacters.shortLabel","Disable Invisible Highlight")}run(e,t,i){return z(this,void 0,void 0,(function*(){const t=null===e||void 0===e?void 0:e.get(P.Ui);t&&this.runAction(t)}))}runAction(e){return z(this,void 0,void 0,(function*(){yield e.updateValue(c.qt.invisibleCharacters,!1,2)}))}}Z.ID="editor.action.unicodeHighlight.disableHighlightingOfInvisibleCharacters";class ee extends d.R6{constructor(){super({id:ee.ID,label:R.NC("action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters","Disable highlighting of non basic ASCII characters"),alias:"Disable highlighting of non basic ASCII characters",precondition:void 0}),this.shortLabel=R.NC("unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters.shortLabel","Disable Non ASCII Highlight")}run(e,t,i){return z(this,void 0,void 0,(function*(){const t=null===e||void 0===e?void 0:e.get(P.Ui);t&&this.runAction(t)}))}runAction(e){return z(this,void 0,void 0,(function*(){yield e.updateValue(c.qt.nonBasicASCII,!1,2)}))}}ee.ID="editor.action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters";class te extends d.R6{constructor(){super({id:te.ID,label:R.NC("action.unicodeHighlight.showExcludeOptions","Show Exclude Options"),alias:"Show Exclude Options",precondition:void 0})}run(e,t,i){return z(this,void 0,void 0,(function*(){const{codePoint:t,reason:s,inString:o,inComment:n}=i,r=String.fromCodePoint(t),a=e.get(M.eJ),d=e.get(P.Ui);function c(e){return l.vU.isInvisibleCharacter(e)?R.NC("unicodeHighlight.excludeInvisibleCharFromBeingHighlighted","Exclude {0} (invisible character) from being highlighted",$(e)):R.NC("unicodeHighlight.excludeCharFromBeingHighlighted","Exclude {0} from being highlighted",`${$(e)} "${r}"`)}const h=[];if(0===s.kind)for(const e of s.notAmbiguousInLocales)h.push({label:R.NC("unicodeHighlight.allowCommonCharactersInLanguage",'Allow unicode characters that are more common in the language "{0}".',e),run:()=>z(this,void 0,void 0,(function*(){se(d,[e])}))});if(h.push({label:c(t),run:()=>ie(d,[t])}),n){const e=new Y;h.push({label:e.label,run:()=>z(this,void 0,void 0,(function*(){return e.runAction(d)}))})}else if(o){const e=new X;h.push({label:e.label,run:()=>z(this,void 0,void 0,(function*(){return e.runAction(d)}))})}if(0===s.kind){const e=new Q;h.push({label:e.label,run:()=>z(this,void 0,void 0,(function*(){return e.runAction(d)}))})}else if(1===s.kind){const e=new Z;h.push({label:e.label,run:()=>z(this,void 0,void 0,(function*(){return e.runAction(d)}))})}else if(2===s.kind){const e=new ee;h.push({label:e.label,run:()=>z(this,void 0,void 0,(function*(){return e.runAction(d)}))})}else oe(s);const u=yield a.pick(h,{title:R.NC("unicodeHighlight.configureUnicodeHighlightOptions","Configure Unicode Highlight Options")});u&&(yield u.run())}))}}function ie(e,t){return z(this,void 0,void 0,(function*(){const i=e.getValue(c.qt.allowedCharacters);let s;s="object"===typeof i&&i?i:{};for(const e of t)s[String.fromCodePoint(e)]=!0;yield e.updateValue(c.qt.allowedCharacters,s,2)}))}function se(e,t){var i;return z(this,void 0,void 0,(function*(){const s=null===(i=e.inspect(c.qt.allowedLocales).user)||void 0===i?void 0:i.value;let o;o="object"===typeof s&&s?Object.assign({},s):{};for(const e of t)o[e]=!0;yield e.updateValue(c.qt.allowedLocales,o,2)}))}function oe(e){throw new Error(`Unexpected value: ${e}`)}te.ID="editor.action.unicodeHighlight.showExcludeOptions",(0,d.Qr)(Q),(0,d.Qr)(Z),(0,d.Qr)(ee),(0,d.Qr)(te),(0,d._K)(W.ID,W,1),m.Ae.register(U)},41902:(e,t,i)=>{var s=i(70959),o=i(21230),n=i(48077),r=i(35195),a=i(25206),l=i(8283),d=function(e,t,i,s){var o,n=arguments.length,r=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)r=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(r=(n<3?o(r):n>3?o(t,i,r):o(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},c=function(e,t){return function(i,s){t(i,s,e)}},h=function(e,t,i,s){function o(e){return e instanceof i?e:new i((function(t){t(e)}))}return new(i||(i=Promise))((function(i,n){function r(e){try{l(s.next(e))}catch(t){n(t)}}function a(e){try{l(s["throw"](e))}catch(t){n(t)}}function l(e){e.done?i(e.value):o(e.value).then(r,a)}l((s=s.apply(e,t||[])).next())}))};const u="ignoreUnusualLineTerminators";function g(e,t,i){e.setModelProperty(t.uri,u,i)}function p(e,t){return e.getModelProperty(t.uri,u)}let _=class extends s.JT{constructor(e,t,i){super(),this._editor=e,this._dialogService=t,this._codeEditorService=i,this._isPresentingDialog=!1,this._config=this._editor.getOption(124),this._register(this._editor.onDidChangeConfiguration((e=>{e.hasChanged(124)&&(this._config=this._editor.getOption(124),this._checkForUnusualLineTerminators())}))),this._register(this._editor.onDidChangeModel((()=>{this._checkForUnusualLineTerminators()}))),this._register(this._editor.onDidChangeModelContent((e=>{e.isUndoing||this._checkForUnusualLineTerminators()}))),this._checkForUnusualLineTerminators()}_checkForUnusualLineTerminators(){return h(this,void 0,void 0,(function*(){if("off"===this._config)return;if(!this._editor.hasModel())return;const e=this._editor.getModel();if(!e.mightContainUnusualLineTerminators())return;const t=p(this._codeEditorService,e);if(!0===t)return;if(this._editor.getOption(89))return;if("auto"===this._config)return void e.removeUnusualLineTerminators(this._editor.getSelections());if(this._isPresentingDialog)return;let i;try{this._isPresentingDialog=!0,i=yield this._dialogService.confirm({title:a.NC("unusualLineTerminators.title","Unusual Line Terminators"),message:a.NC("unusualLineTerminators.message","Detected unusual line terminators"),detail:a.NC("unusualLineTerminators.detail","The file '{0}' contains one or more unusual line terminator characters, like Line Separator (LS) or Paragraph Separator (PS).\n\nIt is recommended to remove them from the file. This can be configured via `editor.unusualLineTerminators`.",(0,o.EZ)(e.uri)),primaryButton:a.NC({key:"unusualLineTerminators.fix",comment:["&& denotes a mnemonic"]},"&&Remove Unusual Line Terminators"),cancelButton:a.NC("unusualLineTerminators.ignore","Ignore")})}finally{this._isPresentingDialog=!1}i.confirmed?e.removeUnusualLineTerminators(this._editor.getSelections()):g(this._codeEditorService,e,!0)}))}};_.ID="editor.contrib.unusualLineTerminatorsDetector",_=d([c(1,l.S),c(2,r.$)],_),(0,n._K)(_.ID,_,1)}}]); \ No newline at end of file diff --git a/dist/js/152.4509fa0b.js b/dist/js/152.4509fa0b.js new file mode 100644 index 00000000..4529f414 --- /dev/null +++ b/dist/js/152.4509fa0b.js @@ -0,0 +1 @@ +"use strict";(globalThis["webpackChunkfrontend"]=globalThis["webpackChunkfrontend"]||[]).push([[152],{90136:(e,o,a)=>{a.d(o,{Z:()=>i});var l=a(59835),n=a(65987);const t=(0,l.h)("div",{class:"q-space"}),i=(0,n.L)({name:"QSpace",setup(){return()=>t}})},85300:(e,o)=>{function a(e,o,a,l,n,t){let i=0,s=0,u=0,r=0;const c=(1<=l){if(i-=l,o[r++]=s+(d>>i)+t,r===o.length)return;s=0}s+=d<{a.d(o,{Z:()=>r});var l=a(59835),n=a(60499),t=a(73512);const i=(0,l.aZ)({__name:"ConfigFileEditor",props:{modelValue:{},language:{},theme:{}},emits:["update:modelValue"],setup(e,{emit:o}){const a=(0,n.iH)(),i=e,s=o;let u;return(0,l.bv)((()=>{u=t.editor.create(a.value,{value:i.modelValue,language:i.language,theme:i.theme,fontFamily:"Roboto Mono"}),u.onDidChangeModelContent((()=>{const e=u.getValue();s("update:modelValue",e)}))})),(0,l.YP)((()=>i.theme),(e=>u.updateOptions({theme:e}))),(0,l.YP)((()=>i.modelValue),(e=>u.setValue(e))),(e,o)=>((0,l.wg)(),(0,l.iD)("div",{ref_key:"dom",ref:a,class:"editor"},null,512))}});var s=a(11639);const u=(0,s.Z)(i,[["__scopeId","data-v-f81849bc"]]),r=u},18490:(e,o,a)=>{a.r(o),a.d(o,{default:()=>T});var l,n=a(59835),t=a(60499),i=a(19302),s=a(87707),u=a(34136),r=a(85300);(function(e){e.RE=/^qdvc:(?(?:[a-zA-Z0-9+/=]|[\u3D00-\u3D08\u4E00-\u8DFF])+)(?:,(?(?:[a-zA-Z0-9+/=]|[\u3D00-\u3D08\u4E00-\u8DFF])+))?$/;const o=e=>/^[a-zA-Z0-9+/=]+$/.test(e);e.decodeBase64=(e,o=!1)=>o?window.atob(e):Uint8Array.from(window.atob(e),(e=>e.charCodeAt(0))),e.encodeBase64=e=>window.btoa(e instanceof Uint8Array?String.fromCharCode(...e):e);const a=(e,o=!1)=>o?(new TextDecoder).decode(r.Jx(e)):r.Jx(e),l=e=>String.fromCharCode(...r.cv(e)),n=(l,n=!1)=>o(l)?e.decodeBase64(l,n):a(l,n);function t(o){const a=e.RE.exec(o);if(!a)return null;const{device:l,session:t}=a.groups;return{device:n(l,!0),session:t?n(t,!1):void 0}}function i(o,a){const{device:n,session:t}=o;return"base64"===a?`qdvc:${e.encodeBase64(n)}${t?`,${e.encodeBase64(t)}`:""}`:`qdvc:${l(n)}${t?`,${l(t)}`:""}`}e.parse=t,e.stringify=i})(l||(l={}));var c=function(e,o,a,l){function n(e){return e instanceof a?e:new a((function(o){o(e)}))}return new(a||(a=Promise))((function(a,t){function i(e){try{u(l.next(e))}catch(o){t(o)}}function s(e){try{u(l["throw"](e))}catch(o){t(o)}}function u(e){e.done?a(e.value):n(e.value).then(i,s)}u((l=l.apply(e,o||[])).next())}))};const d=(0,n._)("div",{class:"text-h5"},"编辑设备信息文件",-1),v={class:"column"},p=(0,n._)("div",{class:"text-body"},[(0,n._)("a",{href:"https://qdvc.ilharp.cc/"},"QDVC"),(0,n.Uk)(" 导入导出 ")],-1),m={class:"q-gutter-md"},f=(0,n._)("div",{class:"text-h6"},"导出 QDVC",-1),g={style:{"max-height":"30vh","font-family":"monospace"}},h=(0,n._)("div",{class:"text-h6"},"导入 QDVC",-1),y={style:{"max-height":"30vh","font-family":"monospace"}},b=(0,n.aZ)({__name:"AccountDeviceEditorView",props:{uin:{}},setup(e){const o=(0,i.Z)(),a=e,r=(0,t.iH)(),b=(0,t.iH)(!0),w=(0,t.iH)(!1),V=(0,t.iH)(!1),C=(0,t.iH)(""),B=(0,t.iH)(!1),W=(0,t.iH)("base64");function _(){return c(this,void 0,void 0,(function*(){try{b.value=!0;const{data:e}=yield u.api.accountDeviceReadApiUinDeviceGet(a.uin);r.value=JSON.stringify(e,null,2)}catch(e){r.value=void 0}finally{b.value=!1}}))}function q(){return c(this,void 0,void 0,(function*(){if(r.value)try{b.value=!0,r.value=JSON.stringify(yield u.api.accountDeviceWriteApiUinDevicePatch(a.uin,JSON.parse(r.value)).then((e=>e.data)),null,2),o.notify({message:"设备信息修改成功",color:"positive"})}catch(e){o.notify({message:`设备信息修改失败: ${e.message}`,color:"negative"})}finally{b.value=!1}}))}function k(){return c(this,void 0,void 0,(function*(){try{b.value=!0,yield u.api.accountConfigDeleteApiUinConfigDelete(a.uin),yield _(),o.notify({message:"设备信息删除成功",color:"positive"})}catch(e){o.notify({message:"设备信息删除失败",color:"negative"})}finally{b.value=!1}}))}function D(){return c(this,void 0,void 0,(function*(){navigator.clipboard&&(yield navigator.clipboard.writeText(C.value),o.notify({message:"已复制到剪贴板",color:"positive"}))}))}function x(){return c(this,void 0,void 0,(function*(){const e=l.parse(C.value);if(e)try{B.value=!0,e.device&&(yield u.api.accountDeviceWriteApiUinDevicePatch(a.uin,JSON.parse(e.device))),e.session&&(yield u.api.accountSessionWriteApiUinSessionPatch(a.uin,{base64_content:l.encodeBase64(e.session)})),o.notify({message:"设备信息导入成功",color:"positive"})}catch(n){o.notify({message:`设备信息导入失败: ${n.message}`,color:"negative"})}finally{B.value=!1}}))}return(0,n.bv)(_),(0,n.YP)(w,(e=>c(this,void 0,void 0,(function*(){if(e)try{C.value="";const e=yield u.api.accountDeviceReadApiUinDeviceGet(a.uin).then((({data:e})=>JSON.stringify(e))),o=yield u.api.accountSessionReadApiUinSessionGet(a.uin).then((({data:e})=>l.decodeBase64(e.base64_content,!1))).catch((()=>{}));C.value=l.stringify({device:e,session:o},W.value)}catch(n){o.notify({message:`设备信息导入失败: ${n.message}`,color:"negative"})}else C.value=""})))),(0,n.YP)(W,(e=>{C.value=l.parse(C.value)?l.stringify(l.parse(C.value),e):""})),(e,a)=>{const i=(0,n.up)("q-btn"),u=(0,n.up)("q-space"),c=(0,n.up)("q-card-section"),S=(0,n.up)("q-separator"),A=(0,n.up)("q-input"),Q=(0,n.up)("q-btn-toggle"),U=(0,n.up)("q-card-actions"),Z=(0,n.up)("q-card"),F=(0,n.up)("q-dialog"),$=(0,n.up)("q-inner-loading"),J=(0,n.up)("q-page");return(0,n.wg)(),(0,n.j4)(J,{class:"row q-pa-md justify-center"},{default:(0,n.w5)((()=>[(0,n.Wm)(Z,{class:"shadow col-12",style:{height:"calc(100vh - 5rem)"}},{default:(0,n.w5)((()=>[(0,n.Wm)(c,{class:"row items-center"},{default:(0,n.w5)((()=>[(0,n.Wm)(i,{onClick:e.$router.back,flat:"",label:"返回",color:"grey",icon:"arrow_back"},null,8,["onClick"]),d,(0,n.Wm)(u),(0,n._)("div",v,[p,(0,n._)("div",m,[(0,n.Wm)(i,{class:"q-ml-md",onClick:a[0]||(a[0]=e=>V.value=!0),flat:"",round:"",color:"primary",icon:"login"}),(0,n.Wm)(i,{class:"q-ml-md",onClick:a[1]||(a[1]=e=>w.value=!0),flat:"",round:"",color:"secondary",icon:"logout"})])])])),_:1}),(0,n.Wm)(F,{modelValue:w.value,"onUpdate:modelValue":a[4]||(a[4]=e=>w.value=e)},{default:(0,n.w5)((()=>[(0,n.Wm)(Z,null,{default:(0,n.w5)((()=>[(0,n.Wm)(c,null,{default:(0,n.w5)((()=>[f])),_:1}),(0,n.Wm)(S),(0,n.Wm)(c,null,{default:(0,n.w5)((()=>[(0,n._)("div",g,[(0,n.Wm)(A,{modelValue:C.value,"onUpdate:modelValue":a[2]||(a[2]=e=>C.value=e),loading:C.value.length<=0,readonly:"",type:"textarea",label:"QDVC分享连接"},null,8,["modelValue","loading"])])])),_:1}),(0,n.Wm)(U,{class:"row justify-center"},{default:(0,n.w5)((()=>[(0,n.Wm)(Q,{modelValue:W.value,"onUpdate:modelValue":a[3]||(a[3]=e=>W.value=e),"toggle-color":"secondary",flat:"",options:[{label:"Base64",value:"base64"},{label:"Base16384",value:"base16384"}]},null,8,["modelValue"]),(0,n.Wm)(i,{onClick:D,flat:"",label:"复制到剪贴板",color:"primary",icon:"content_copy"})])),_:1})])),_:1})])),_:1},8,["modelValue"]),(0,n.Wm)(F,{modelValue:V.value,"onUpdate:modelValue":a[6]||(a[6]=e=>V.value=e)},{default:(0,n.w5)((()=>[(0,n.Wm)(Z,null,{default:(0,n.w5)((()=>[(0,n.Wm)(c,null,{default:(0,n.w5)((()=>[h])),_:1}),(0,n.Wm)(S),(0,n.Wm)(c,null,{default:(0,n.w5)((()=>[(0,n._)("div",y,[(0,n.Wm)(A,{modelValue:C.value,"onUpdate:modelValue":a[5]||(a[5]=e=>C.value=e),loading:B.value,disable:B.value,rules:[e=>(0,t.SU)(l).RE.test(e)||"不是有效的 QDVC 链接"],type:"textarea",label:"QDVC分享连接"},null,8,["modelValue","loading","disable","rules"])])])),_:1}),(0,n.Wm)(U,{class:"row justify-center"},{default:(0,n.w5)((()=>[(0,n.Wm)(i,{onClick:x,flat:"",label:"应用 QDVC 配置",color:"primary",icon:"login"})])),_:1})])),_:1})])),_:1},8,["modelValue"]),(0,n.Wm)(S),(0,n.Wm)(U,{class:"q-gutter-md q-mx-md"},{default:(0,n.w5)((()=>[(0,n.Wm)(i,{flat:"",onClick:q,color:"primary",label:"提交修改",icon:"save"}),(0,n.Wm)(i,{flat:"",onClick:_,color:"secondary",label:"重新加载配置文件",icon:"refresh"}),(0,n.Wm)(i,{flat:"",onClick:k,color:"negative",label:"删除并重新生成配置文件",icon:"delete"})])),_:1}),(0,n.Wm)(c,null,{default:(0,n.w5)((()=>["undefined"!==typeof r.value?((0,n.wg)(),(0,n.j4)(s.Z,{key:0,modelValue:r.value,"onUpdate:modelValue":a[7]||(a[7]=e=>r.value=e),language:"json",style:{height:"70vh"},theme:(0,t.SU)(o).dark.isActive?"vs-dark":"vs"},null,8,["modelValue","theme"])):(0,n.kq)("",!0),(0,n.Wm)($,{showing:b.value},null,8,["showing"])])),_:1})])),_:1})])),_:1})}}});var w=a(69885),V=a(44458),C=a(63190),B=a(68879),W=a(90136),_=a(32074),q=a(50926),k=a(66611),D=a(11821),x=a(65987),S=a(22026);const A=(0,x.L)({name:"QBtnGroup",props:{unelevated:Boolean,outline:Boolean,flat:Boolean,rounded:Boolean,square:Boolean,push:Boolean,stretch:Boolean,glossy:Boolean,spread:Boolean},setup(e,{slots:o}){const a=(0,n.Fl)((()=>{const o=["unelevated","outline","flat","rounded","square","push","stretch","glossy"].filter((o=>!0===e[o])).map((e=>`q-btn-group--${e}`)).join(" ");return"q-btn-group row no-wrap"+(0!==o.length?" "+o:"")+(!0===e.spread?" q-btn-group--spread":" inline")}));return()=>(0,n.h)("div",{class:a.value},(0,S.KR)(o.default))}});var Q=a(99256),U=a(36073);const Z=(0,x.L)({name:"QBtnToggle",props:{...Q.Fz,modelValue:{required:!0},options:{type:Array,required:!0,validator:e=>e.every((e=>("label"in e||"icon"in e||"slot"in e)&&"value"in e))},color:String,textColor:String,toggleColor:{type:String,default:"primary"},toggleTextColor:String,outline:Boolean,flat:Boolean,unelevated:Boolean,rounded:Boolean,push:Boolean,glossy:Boolean,size:String,padding:String,noCaps:Boolean,noWrap:Boolean,dense:Boolean,readonly:Boolean,disable:Boolean,stack:Boolean,stretch:Boolean,spread:Boolean,clearable:Boolean,ripple:{type:[Boolean,Object],default:!0}},emits:["update:modelValue","clear","click"],setup(e,{slots:o,emit:a}){const l=(0,n.Fl)((()=>void 0!==e.options.find((o=>o.value===e.modelValue)))),t=(0,n.Fl)((()=>({type:"hidden",name:e.name,value:e.modelValue}))),i=(0,Q.eX)(t),s=(0,n.Fl)((()=>(0,U._V)(e))),u=(0,n.Fl)((()=>({rounded:e.rounded,dense:e.dense,...s.value}))),r=(0,n.Fl)((()=>e.options.map(((o,a)=>{const{attrs:l,value:n,slot:t,...i}=o;return{slot:t,props:{key:a,"aria-pressed":n===e.modelValue?"true":"false",...l,...i,...u.value,disable:!0===e.disable||!0===i.disable,color:n===e.modelValue?d(i,"toggleColor"):d(i,"color"),textColor:n===e.modelValue?d(i,"toggleTextColor"):d(i,"textColor"),noCaps:!0===d(i,"noCaps"),noWrap:!0===d(i,"noWrap"),size:d(i,"size"),padding:d(i,"padding"),ripple:d(i,"ripple"),stack:!0===d(i,"stack"),stretch:!0===d(i,"stretch"),onClick(e){c(n,o,e)}}}}))));function c(o,l,n){!0!==e.readonly&&(e.modelValue===o?!0===e.clearable&&(a("update:modelValue",null,null),a("clear")):a("update:modelValue",o,l),a("click",n))}function d(o,a){return void 0===o[a]?e[a]:o[a]}function v(){const a=r.value.map((e=>(0,n.h)(B.Z,e.props,void 0!==e.slot?o[e.slot]:void 0)));return void 0!==e.name&&!0!==e.disable&&!0===l.value&&i(a,"push"),(0,S.vs)(o.default,a)}return()=>(0,n.h)(A,{class:"q-btn-toggle",...s.value,rounded:e.rounded,stretch:e.stretch,glossy:e.glossy,spread:e.spread},v)}});var F=a(60854),$=a(69984),J=a.n($);const P=b,T=P;J()(b,"components",{QPage:w.Z,QCard:V.Z,QCardSection:C.Z,QBtn:B.Z,QSpace:W.Z,QDialog:_.Z,QSeparator:q.Z,QInput:k.Z,QCardActions:D.Z,QBtnToggle:Z,QInnerLoading:F.Z})}}]); \ No newline at end of file diff --git a/dist/js/19.db43c757.js b/dist/js/19.db43c757.js new file mode 100644 index 00000000..661c71eb --- /dev/null +++ b/dist/js/19.db43c757.js @@ -0,0 +1,8 @@ +"use strict";(globalThis["webpackChunkfrontend"]=globalThis["webpackChunkfrontend"]||[]).push([[19],{50200:(e,t,r)=>{r.d(t,{Gi:()=>u,WX:()=>l,lg:()=>s});var s,n=r(98642),i=r(47606),o=r(95896);(function(e){e.inMemory="inmemory",e.vscode="vscode",e.internal="private",e.walkThrough="walkThrough",e.walkThroughSnippet="walkThroughSnippet",e.http="http",e.https="https",e.file="file",e.mailto="mailto",e.untitled="untitled",e.data="data",e.command="command",e.vscodeRemote="vscode-remote",e.vscodeRemoteResource="vscode-remote-resource",e.vscodeManagedRemoteResource="vscode-managed-remote-resource",e.vscodeUserData="vscode-userdata",e.vscodeCustomEditor="vscode-custom-editor",e.vscodeNotebookCell="vscode-notebook-cell",e.vscodeNotebookCellMetadata="vscode-notebook-cell-metadata",e.vscodeNotebookCellOutput="vscode-notebook-cell-output",e.vscodeInteractiveInput="vscode-interactive-input",e.vscodeSettings="vscode-settings",e.vscodeWorkspaceTrust="vscode-workspace-trust",e.vscodeTerminal="vscode-terminal",e.vscodeChatSesssion="vscode-chat-editor",e.webviewPanel="webview-panel",e.vscodeWebview="vscode-webview",e.extension="extension",e.vscodeFileResource="vscode-file",e.tmp="tmp",e.vsls="vsls",e.vscodeSourceControl="vscode-scm"})(s||(s={}));const h="tkn";class a{constructor(){this._hosts=Object.create(null),this._ports=Object.create(null),this._connectionTokens=Object.create(null),this._preferredWebSchema="http",this._delegate=null,this._remoteResourcesPath=`/${s.vscodeRemoteResource}`}setPreferredWebSchema(e){this._preferredWebSchema=e}rewrite(e){if(this._delegate)try{return this._delegate(e)}catch(u){return n.dL(u),e}const t=e.authority;let r=this._hosts[t];r&&-1!==r.indexOf(":")&&-1===r.indexOf("[")&&(r=`[${r}]`);const a=this._ports[t],l=this._connectionTokens[t];let c=`path=${encodeURIComponent(e.path)}`;return"string"===typeof l&&(c+=`&${h}=${encodeURIComponent(l)}`),o.o.from({scheme:i.$L?this._preferredWebSchema:s.vscodeRemoteResource,authority:`${r}:${a}`,path:this._remoteResourcesPath,query:c})}}const l=new a;class c{uriToBrowserUri(e){return e.scheme===s.vscodeRemote?l.rewrite(e):e.scheme===s.file&&(i.tY||i.n2&&i.li.origin===`${s.vscodeFileResource}://${c.FALLBACK_AUTHORITY}`)?e.with({scheme:s.vscodeFileResource,authority:e.authority||c.FALLBACK_AUTHORITY,query:null,fragment:null}):e}}c.FALLBACK_AUTHORITY="vscode-app";const u=new c;var d;(function(e){const t=new Map([["1",{"Cross-Origin-Opener-Policy":"same-origin"}],["2",{"Cross-Origin-Embedder-Policy":"require-corp"}],["3",{"Cross-Origin-Opener-Policy":"same-origin","Cross-Origin-Embedder-Policy":"require-corp"}]]);e.CoopAndCoep=Object.freeze(t.get("3"));const r="vscode-coi";function s(e){let s;"string"===typeof e?s=new URL(e).searchParams:e instanceof URL?s=e.searchParams:o.o.isUri(e)&&(s=new URL(e.toString(!0)).searchParams);const n=null===s||void 0===s?void 0:s.get(r);if(n)return t.get(n)}function n(e,t,s){if(!globalThis.crossOriginIsolated)return;const n=t&&s?"3":s?"2":"1";e instanceof URLSearchParams?e.set(r,n):e[r]=n}e.getHeadersFromQuery=s,e.addSearchParam=n})(d||(d={}))},46304:(e,t,r)=>{function s(e,t,r){return Math.min(Math.max(e,t),r)}r.d(t,{N:()=>i,nM:()=>n,uZ:()=>s});class n{constructor(){this._n=1,this._val=0}update(e){return this._val=this._val+(e-this._val)/this._n,this._n+=1,this._val}get value(){return this._val}}class i{constructor(e){this._n=0,this._val=0,this._values=[],this._index=0,this._sum=0,this._values=new Array(e),this._values.fill(0,0,e)}update(e){const t=this._values[this._index];return this._values[this._index]=e,this._index=(this._index+1)%this._values.length,this._sum-=t,this._sum+=e,this._n{r.d(t,{$E:()=>d,I8:()=>n,IU:()=>f,_A:()=>i,fS:()=>c,jB:()=>l,rs:()=>h});var s=r(55455);function n(e){if(!e||"object"!==typeof e)return e;if(e instanceof RegExp)return e;const t=Array.isArray(e)?[]:{};return Object.entries(e).forEach((([e,r])=>{t[e]=r&&"object"===typeof r?n(r):r})),t}function i(e){if(!e||"object"!==typeof e)return e;const t=[e];while(t.length>0){const e=t.shift();Object.freeze(e);for(const r in e)if(o.call(e,r)){const n=e[r];"object"!==typeof n||Object.isFrozen(n)||(0,s.fU)(n)||t.push(n)}}return e}const o=Object.prototype.hasOwnProperty;function h(e,t){return a(e,t,new Set)}function a(e,t,r){if((0,s.Jp)(e))return e;const n=t(e);if("undefined"!==typeof n)return n;if(Array.isArray(e)){const s=[];for(const n of e)s.push(a(n,t,r));return s}if((0,s.Kn)(e)){if(r.has(e))throw new Error("Cannot clone recursive data-structure");r.add(e);const s={};for(const n in e)o.call(e,n)&&(s[n]=a(e[n],t,r));return r.delete(e),s}return e}function l(e,t,r=!0){return(0,s.Kn)(e)?((0,s.Kn)(t)&&Object.keys(t).forEach((n=>{n in e?r&&((0,s.Kn)(e[n])&&(0,s.Kn)(t[n])?l(e[n],t[n],r):e[n]=t[n]):e[n]=t[n]})),e):t}function c(e,t){if(e===t)return!0;if(null===e||void 0===e||null===t||void 0===t)return!1;if(typeof e!==typeof t)return!1;if("object"!==typeof e)return!1;if(Array.isArray(e)!==Array.isArray(t))return!1;let r,s;if(Array.isArray(e)){if(e.length!==t.length)return!1;for(r=0;rfunction(){const r=Array.prototype.slice.call(arguments,0);return t(e,r)},s={};for(const n of e)s[n]=r(n);return s}},90168:(e,t,r)=>{r.d(t,{EH:()=>i.EH,nJ:()=>i.nJ,Dz:()=>a,nK:()=>n.nK,$g:()=>v,rD:()=>u,GN:()=>p,aq:()=>f,uh:()=>s.uh,PS:()=>s.PS,F_:()=>c});var s=r(33125),n=r(82861),i=r(61818),o=r(70959),h=r(49927);function a(e){return new l(e)}class l extends s.Nc{constructor(e){super(),this.value=e}get debugName(){return this.toString()}get(){return this.value}addObserver(e){}removeObserver(e){}toString(){return`Const: ${this.value}`}}function c(e,t){return new Promise((r=>{let s=!1,n=!1;const o=(0,i.EH)("waitForState",(i=>{const h=e.read(i);t(h)&&(s?o.dispose():n=!0,r(h))}));s=!0,n&&o.dispose()}))}function u(e,t){return new d(e,t)}class d extends s.hm{constructor(e,t){super(),this.event=e,this.getValue=t,this.hasValue=!1,this.handleEvent=e=>{var t;const r=this.getValue(e),n=!this.hasValue||this.value!==r;null===(t=(0,h.jl)())||void 0===t||t.handleFromEventObservableTriggered(this,{oldValue:this.value,newValue:r,change:void 0,didChange:n}),n&&(this.value=r,this.hasValue&&(0,s.PS)((e=>{for(const t of this.observers)e.updateObserver(t,this),t.handleChange(this,void 0)}),(()=>{const e=this.getDebugName();return"Event fired"+(e?`: ${e}`:"")})),this.hasValue=!0)}}getDebugName(){return(0,s.$P)(this.getValue)}get debugName(){const e=this.getDebugName();return"From Event"+(e?`: ${e}`:"")}onFirstObserverAdded(){this.subscription=this.event(this.handleEvent)}onLastObserverRemoved(){this.subscription.dispose(),this.subscription=void 0,this.hasValue=!1,this.value=void 0}get(){return this.subscription?(this.hasValue||this.handleEvent(void 0),this.value):this.getValue(void 0)}}function f(e,t){return new g(e,t)}(function(e){e.Observer=d})(u||(u={}));class g extends s.hm{constructor(e,t){super(),this.debugName=e,this.event=t,this.handleEvent=()=>{(0,s.PS)((e=>{for(const t of this.observers)e.updateObserver(t,this),t.handleChange(this,void 0)}),(()=>this.debugName))}}onFirstObserverAdded(){this.subscription=this.event(this.handleEvent)}onLastObserverRemoved(){this.subscription.dispose(),this.subscription=void 0}get(){}}function p(e){return new m(e)}class m extends s.hm{constructor(e){super(),this.debugName=e}trigger(e,t){if(e)for(const r of this.observers)e.updateObserver(r,this),r.handleChange(this,t);else(0,s.PS)((e=>{this.trigger(e,t)}),(()=>`Trigger signal ${this.debugName}`))}get(){}}function v(e,t){const r=new _(null!==t&&void 0!==t&&t);return e.addObserver(r),t&&e.reportChanges(),(0,o.OF)((()=>{e.removeObserver(r)}))}class _{constructor(e){this.forceRecompute=e,this.counter=0}beginUpdate(e){this.counter++}endUpdate(e){this.counter--,0===this.counter&&this.forceRecompute&&e.reportChanges()}handlePossibleChange(e){}handleChange(e,t){}}const b=!1;b&&(0,h.EK)(new h.Qy)},61818:(e,t,r)=>{r.d(t,{EH:()=>o,b2:()=>a,nJ:()=>h});var s=r(65662),n=r(70959),i=r(49927);function o(e,t){return new c(e,t,void 0,void 0)}function h(e,t,r){return new c(e,r,t.createEmptyChangeSummary,t.handleChange)}function a(e,t){return l(t,e)}function l(e,t){const r=new n.SL,s=o(t,(t=>{r.clear(),e(t,r)}));return(0,n.OF)((()=>{s.dispose(),r.dispose()}))}class c{constructor(e,t,r,s){var n,o;this.debugName=e,this.runFn=t,this.createChangeSummary=r,this._handleChange=s,this.state=2,this.updateCount=0,this.disposed=!1,this.dependencies=new Set,this.dependenciesToBeRemoved=new Set,this.changeSummary=null===(n=this.createChangeSummary)||void 0===n?void 0:n.call(this),null===(o=(0,i.jl)())||void 0===o||o.handleAutorunCreated(this),this._runIfNeeded()}dispose(){this.disposed=!0;for(const e of this.dependencies)e.removeObserver(this);this.dependencies.clear()}_runIfNeeded(){var e,t;if(3===this.state)return;const r=this.dependenciesToBeRemoved;this.dependenciesToBeRemoved=this.dependencies,this.dependencies=r,this.state=3,null===(e=(0,i.jl)())||void 0===e||e.handleAutorunTriggered(this);try{const e=this.changeSummary;this.changeSummary=null===(t=this.createChangeSummary)||void 0===t?void 0:t.call(this),this.runFn(this,e)}finally{for(const e of this.dependenciesToBeRemoved)e.removeObserver(this);this.dependenciesToBeRemoved.clear()}}toString(){return`Autorun<${this.debugName}>`}beginUpdate(){3===this.state&&(this.state=1),this.updateCount++}endUpdate(){if(1===this.updateCount)do{if(1===this.state){this.state=3;for(const e of this.dependencies)if(e.reportChanges(),2===this.state)break}this._runIfNeeded()}while(3!==this.state);this.updateCount--,(0,s.eZ)((()=>this.updateCount>=0))}handlePossibleChange(e){3===this.state&&this.dependencies.has(e)&&!this.dependenciesToBeRemoved.has(e)&&(this.state=1)}handleChange(e,t){if(this.dependencies.has(e)&&!this.dependenciesToBeRemoved.has(e)){const r=!this._handleChange||this._handleChange({changedObservable:e,change:t,didChange:t=>t===e},this.changeSummary);r&&(this.state=2)}}readObservable(e){if(this.disposed)return e.get();e.addObserver(this);const t=e.get();return this.dependencies.add(e),this.dependenciesToBeRemoved.delete(e),t}}(function(e){e.Observer=c})(o||(o={}))},33125:(e,t,r)=>{r.d(t,{$P:()=>u,DN:()=>g,Nc:()=>o,PS:()=>a,Qv:()=>i,c8:()=>l,hm:()=>h,uh:()=>d});var s=r(49927);let n;function i(e){n=e}class o{get TChange(){return null}reportChanges(){this.get()}read(e){return e?e.readObservable(this):this.get()}map(e){return n((()=>{const t=u(e);return void 0!==t?t:`${this.debugName} (mapped)`}),(t=>e(this.read(t),t)))}}class h extends o{constructor(){super(...arguments),this.observers=new Set}addObserver(e){const t=this.observers.size;this.observers.add(e),0===t&&this.onFirstObserverAdded()}removeObserver(e){const t=this.observers.delete(e);t&&0===this.observers.size&&this.onLastObserverRemoved()}onFirstObserverAdded(){}onLastObserverRemoved(){}}function a(e,t){var r,n;const i=new c(e,t);try{null===(r=(0,s.jl)())||void 0===r||r.handleBeginTransaction(i),e(i)}finally{i.finish(),null===(n=(0,s.jl)())||void 0===n||n.handleEndTransaction()}}function l(e,t,r){e?t(e):a(t,r)}class c{constructor(e,t){this.fn=e,this._getDebugName=t,this.updatingObservers=[]}getDebugName(){return this._getDebugName?this._getDebugName():u(this.fn)}updateObserver(e,t){this.updatingObservers.push({observer:e,observable:t}),e.beginUpdate(t)}finish(){const e=this.updatingObservers;this.updatingObservers=null;for(const{observer:t,observable:r}of e)t.endUpdate(r)}}function u(e){const t=e.toString(),r=/\/\*\*\s*@description\s*([^*]*)\*\//,s=r.exec(t),n=s?s[1]:void 0;return null===n||void 0===n?void 0:n.trim()}function d(e,t){return new f(e,t)}class f extends h{constructor(e,t){super(),this.debugName=e,this._value=t}get(){return this._value}set(e,t,r){var n;if(this._value===e)return;let i;t||(t=i=new c((()=>{}),(()=>`Setting ${this.debugName}`)));try{const i=this._value;this._setValue(e),null===(n=(0,s.jl)())||void 0===n||n.handleObservableChanged(this,{oldValue:i,newValue:e,change:r,didChange:!0});for(const e of this.observers)t.updateObserver(e,this),e.handleChange(this,r)}finally{i&&i.finish()}}toString(){return`${this.debugName}: ${this._value}`}_setValue(e){this._value=e}}function g(e,t){return new p(e,t)}class p extends f{_setValue(e){this._value!==e&&(this._value&&this._value.dispose(),this._value=e)}dispose(){var e;null===(e=this._value)||void 0===e||e.dispose()}}},82861:(e,t,r)=>{r.d(t,{Be:()=>l,aK:()=>a,nK:()=>h});var s=r(98642),n=r(70959),i=r(33125),o=r(49927);function h(e,t){return new c(e,t,void 0,void 0,void 0)}function a(e,t,r){return new c(e,r,t.createEmptyChangeSummary,t.handleChange,void 0)}function l(e,t){const r=new n.SL;return new c(e,(e=>(r.clear(),t(e,r))),void 0,void 0,(()=>r.dispose()))}(0,i.Qv)(h);class c extends i.hm{get debugName(){return"function"===typeof this._debugName?this._debugName():this._debugName}constructor(e,t,r,s,n=void 0){var i,h;super(),this._debugName=e,this.computeFn=t,this.createChangeSummary=r,this._handleChange=s,this._handleLastObserverRemoved=n,this.state=0,this.value=void 0,this.updateCount=0,this.dependencies=new Set,this.dependenciesToBeRemoved=new Set,this.changeSummary=void 0,this.changeSummary=null===(i=this.createChangeSummary)||void 0===i?void 0:i.call(this),null===(h=(0,o.jl)())||void 0===h||h.handleDerivedCreated(this)}onLastObserverRemoved(){var e;this.state=0,this.value=void 0;for(const t of this.dependencies)t.removeObserver(this);this.dependencies.clear(),null===(e=this._handleLastObserverRemoved)||void 0===e||e.call(this)}get(){var e;if(0===this.observers.size){const t=this.computeFn(this,null===(e=this.createChangeSummary)||void 0===e?void 0:e.call(this));return this.onLastObserverRemoved(),t}do{if(1===this.state){this.state=3;for(const e of this.dependencies)if(e.reportChanges(),2===this.state)break}this._recomputeIfNeeded()}while(3!==this.state);return this.value}_recomputeIfNeeded(){var e,t;if(3===this.state)return;const r=this.dependenciesToBeRemoved;this.dependenciesToBeRemoved=this.dependencies,this.dependencies=r;const s=0!==this.state,n=this.value;this.state=3;const i=this.changeSummary;this.changeSummary=null===(e=this.createChangeSummary)||void 0===e?void 0:e.call(this);try{this.value=this.computeFn(this,i)}finally{for(const e of this.dependenciesToBeRemoved)e.removeObserver(this);this.dependenciesToBeRemoved.clear()}const h=s&&n!==this.value;if(null===(t=(0,o.jl)())||void 0===t||t.handleDerivedRecomputed(this,{oldValue:n,newValue:this.value,change:void 0,didChange:h}),h)for(const o of this.observers)o.handleChange(this,void 0)}toString(){return`LazyDerived<${this.debugName}>`}beginUpdate(e){this.updateCount++;const t=1===this.updateCount;if(3===this.state&&(this.state=1,!t))for(const r of this.observers)r.handlePossibleChange(this);if(t)for(const r of this.observers)r.beginUpdate(this)}endUpdate(e){if(this.updateCount--,0===this.updateCount){const e=[...this.observers];for(const t of e)t.endUpdate(this)}if(this.updateCount<0)throw new s.he}handlePossibleChange(e){if(3===this.state&&this.dependencies.has(e)&&!this.dependenciesToBeRemoved.has(e)){this.state=1;for(const e of this.observers)e.handlePossibleChange(this)}}handleChange(e,t){if(this.dependencies.has(e)&&!this.dependenciesToBeRemoved.has(e)){const r=!this._handleChange||this._handleChange({changedObservable:e,change:t,didChange:t=>t===e},this.changeSummary),s=3===this.state;if(r&&(1===this.state||s)&&(this.state=2,s))for(const e of this.observers)e.handlePossibleChange(this)}}readObservable(e){e.addObserver(this);const t=e.get();return this.dependencies.add(e),this.dependenciesToBeRemoved.delete(e),t}addObserver(e){const t=!this.observers.has(e)&&this.updateCount>0;super.addObserver(e),t&&e.beginUpdate(this)}removeObserver(e){const t=this.observers.has(e)&&this.updateCount>0;super.removeObserver(e),t&&e.endUpdate(this)}}},49927:(e,t,r)=>{let s;function n(e){s=e}function i(){return s}r.d(t,{EK:()=>n,Qy:()=>o,jl:()=>i});class o{constructor(){this.indentation=0,this.changedObservablesSets=new WeakMap}textToConsoleArgs(e){return h([a(g("| ",this.indentation)),e])}formatInfo(e){return e.didChange?[a(" "),c(u(e.oldValue,70),{color:"red",strikeThrough:!0}),a(" "),c(u(e.newValue,60),{color:"green"})]:[a(" (unchanged)")]}handleObservableChanged(e,t){console.log(...this.textToConsoleArgs([l("observable value changed"),c(e.debugName,{color:"BlueViolet"}),...this.formatInfo(t)]))}formatChanges(e){if(0!==e.size)return c(" (changed deps: "+[...e].map((e=>e.debugName)).join(", ")+")",{color:"gray"})}handleDerivedCreated(e){const t=e.handleChange;this.changedObservablesSets.set(e,new Set),e.handleChange=(r,s)=>(this.changedObservablesSets.get(e).add(r),t.apply(e,[r,s]))}handleDerivedRecomputed(e,t){const r=this.changedObservablesSets.get(e);console.log(...this.textToConsoleArgs([l("derived recomputed"),c(e.debugName,{color:"BlueViolet"}),...this.formatInfo(t),this.formatChanges(r)])),r.clear()}handleFromEventObservableTriggered(e,t){console.log(...this.textToConsoleArgs([l("observable from event triggered"),c(e.debugName,{color:"BlueViolet"}),...this.formatInfo(t)]))}handleAutorunCreated(e){const t=e.handleChange;this.changedObservablesSets.set(e,new Set),e.handleChange=(r,s)=>(this.changedObservablesSets.get(e).add(r),t.apply(e,[r,s]))}handleAutorunTriggered(e){const t=this.changedObservablesSets.get(e);console.log(...this.textToConsoleArgs([l("autorun"),c(e.debugName,{color:"BlueViolet"}),this.formatChanges(t)])),t.clear()}handleBeginTransaction(e){let t=e.getDebugName();void 0===t&&(t=""),console.log(...this.textToConsoleArgs([l("transaction"),c(t,{color:"BlueViolet"})])),this.indentation++}handleEndTransaction(){this.indentation--}}function h(e){const t=new Array,r={},s=r;let n="";function i(e){if("length"in e)for(const t of e)t&&i(t);else"text"in e?(n+=`%c${e.text}`,t.push(e.style),e.data&&Object.assign(s,e.data)):"data"in e&&Object.assign(s,e.data)}i(e);const o=[n,...t];return Object.keys(s).length>0&&o.push(s),o}function a(e){return c(e,{color:"black"})}function l(e){return c(p(`${e}: `,10),{color:"black",bold:!0})}function c(e,t={color:"black"}){function r(e){return Object.entries(e).reduce(((e,[t,r])=>`${e}${t}:${r};`),"")}const s={color:t.color};return t.strikeThrough&&(s["text-decoration"]="line-through"),t.bold&&(s["font-weight"]="bold"),{text:e,style:r(s)}}function u(e,t){switch(typeof e){case"number":return""+e;case"string":return e.length+2<=t?`"${e}"`:`"${e.substr(0,t-7)}"+...`;case"boolean":return e?"true":"false";case"undefined":return"undefined";case"object":return null===e?"null":Array.isArray(e)?d(e,t):f(e,t);case"symbol":return e.toString();case"function":return`[[Function${e.name?" "+e.name:""}]]`;default:return""+e}}function d(e,t){let r="[ ",s=!0;for(const n of e){if(s||(r+=", "),r.length-5>t){r+="...";break}s=!1,r+=`${u(n,t-r.length)}`}return r+=" ]",r}function f(e,t){let r="{ ",s=!0;for(const[n,i]of Object.entries(e)){if(s||(r+=", "),r.length-5>t){r+="...";break}s=!1,r+=`${n}: ${u(i,t-r.length)}`}return r+=" }",r}function g(e,t){let r="";for(let s=1;s<=t;s++)r+=e;return r}function p(e,t){while(e.length{r.d(t,{EZ:()=>L,XX:()=>k,DZ:()=>$,Fv:()=>T,KR:()=>D,Gf:()=>I,DB:()=>P,ir:()=>R,Ku:()=>x});var s=r(47606);let n;if("undefined"!==typeof s.li.vscode&&"undefined"!==typeof s.li.vscode.process){const e=s.li.vscode.process;n={get platform(){return e.platform},get arch(){return e.arch},get env(){return e.env},cwd(){return e.cwd()}}}else n="undefined"!==typeof process?{get platform(){return process.platform},get arch(){return process.arch},get env(){return process.env},cwd(){return process.env["VSCODE_CWD"]||process.cwd()}}:{get platform(){return s.ED?"win32":s.dz?"darwin":"linux"},get arch(){},get env(){return{}},cwd(){return"/"}};const i=n.cwd,o=n.env,h=n.platform,a=65,l=97,c=90,u=122,d=46,f=47,g=92,p=58,m=63;class v extends Error{constructor(e,t,r){let s;"string"===typeof t&&0===t.indexOf("not ")?(s="must not be",t=t.replace(/^not /,"")):s="must be";const n=-1!==e.indexOf(".")?"property":"argument";let i=`The "${e}" ${n} ${s} of type ${t}`;i+=". Received type "+typeof r,super(i),this.code="ERR_INVALID_ARG_TYPE"}}function _(e,t){if(null===e||"object"!==typeof e)throw new v(t,"Object",e)}function b(e,t){if("string"!==typeof e)throw new v(t,"string",e)}const C="win32"===h;function w(e){return e===f||e===g}function y(e){return e===f}function A(e){return e>=a&&e<=c||e>=l&&e<=u}function S(e,t,r,s){let n="",i=0,o=-1,h=0,a=0;for(let l=0;l<=e.length;++l){if(l2){const e=n.lastIndexOf(r);-1===e?(n="",i=0):(n=n.slice(0,e),i=n.length-1-n.lastIndexOf(r)),o=l,h=0;continue}if(0!==n.length){n="",i=0,o=l,h=0;continue}}t&&(n+=n.length>0?`${r}..`:"..",i=2)}else n.length>0?n+=`${r}${e.slice(o+1,l)}`:n=e.slice(o+1,l),i=l-o-1;o=l,h=0}else a===d&&-1!==h?++h:h=-1}return n}function E(e,t){_(t,"pathObject");const r=t.dir||t.root,s=t.base||`${t.name||""}${t.ext||""}`;return r?r===t.root?`${r}${s}`:`${r}${e}${s}`:s}const x={resolve(...e){let t="",r="",s=!1;for(let n=e.length-1;n>=-1;n--){let h;if(n>=0){if(h=e[n],b(h,"path"),0===h.length)continue}else 0===t.length?h=i():(h=o[`=${t}`]||i(),(void 0===h||h.slice(0,2).toLowerCase()!==t.toLowerCase()&&h.charCodeAt(2)===g)&&(h=`${t}\\`));const a=h.length;let l=0,c="",u=!1;const d=h.charCodeAt(0);if(1===a)w(d)&&(l=1,u=!0);else if(w(d))if(u=!0,w(h.charCodeAt(1))){let e=2,t=e;while(e2&&w(h.charCodeAt(2))&&(u=!0,l=3));if(c.length>0)if(t.length>0){if(c.toLowerCase()!==t.toLowerCase())continue}else t=c;if(s){if(t.length>0)break}else if(r=`${h.slice(l)}\\${r}`,s=u,u&&t.length>0)break}return r=S(r,!s,"\\",w),s?`${t}\\${r}`:`${t}${r}`||"."},normalize(e){b(e,"path");const t=e.length;if(0===t)return".";let r,s=0,n=!1;const i=e.charCodeAt(0);if(1===t)return y(i)?"\\":e;if(w(i))if(n=!0,w(e.charCodeAt(1))){let n=2,i=n;while(n2&&w(e.charCodeAt(2))&&(n=!0,s=3));let o=s0&&w(e.charCodeAt(t-1))&&(o+="\\"),void 0===r?n?`\\${o}`:o:n?`${r}\\${o}`:`${r}${o}`},isAbsolute(e){b(e,"path");const t=e.length;if(0===t)return!1;const r=e.charCodeAt(0);return w(r)||t>2&&A(r)&&e.charCodeAt(1)===p&&w(e.charCodeAt(2))},join(...e){if(0===e.length)return".";let t,r;for(let i=0;i0&&(void 0===t?t=r=s:t+=`\\${s}`)}if(void 0===t)return".";let s=!0,n=0;if("string"===typeof r&&w(r.charCodeAt(0))){++n;const e=r.length;e>1&&w(r.charCodeAt(1))&&(++n,e>2&&(w(r.charCodeAt(2))?++n:s=!1))}if(s){while(n=2&&(t=`\\${t.slice(n)}`)}return x.normalize(t)},relative(e,t){if(b(e,"from"),b(t,"to"),e===t)return"";const r=x.resolve(e),s=x.resolve(t);if(r===s)return"";if(e=r.toLowerCase(),t=s.toLowerCase(),e===t)return"";let n=0;while(nn&&e.charCodeAt(i-1)===g)i--;const o=i-n;let h=0;while(hh&&t.charCodeAt(a-1)===g)a--;const l=a-h,c=oc){if(t.charCodeAt(h+d)===g)return s.slice(h+d+1);if(2===d)return s.slice(h+d)}o>c&&(e.charCodeAt(n+d)===g?u=d:2===d&&(u=3)),-1===u&&(u=0)}let f="";for(d=n+u+1;d<=i;++d)d!==i&&e.charCodeAt(d)!==g||(f+=0===f.length?"..":"\\..");return h+=u,f.length>0?`${f}${s.slice(h,a)}`:(s.charCodeAt(h)===g&&++h,s.slice(h,a))},toNamespacedPath(e){if("string"!==typeof e||0===e.length)return e;const t=x.resolve(e);if(t.length<=2)return e;if(t.charCodeAt(0)===g){if(t.charCodeAt(1)===g){const e=t.charCodeAt(2);if(e!==m&&e!==d)return`\\\\?\\UNC\\${t.slice(2)}`}}else if(A(t.charCodeAt(0))&&t.charCodeAt(1)===p&&t.charCodeAt(2)===g)return`\\\\?\\${t}`;return e},dirname(e){b(e,"path");const t=e.length;if(0===t)return".";let r=-1,s=0;const n=e.charCodeAt(0);if(1===t)return w(n)?e:".";if(w(n)){if(r=s=1,w(e.charCodeAt(1))){let n=2,i=n;while(n2&&w(e.charCodeAt(2))?3:2,s=r);let i=-1,o=!0;for(let h=t-1;h>=s;--h)if(w(e.charCodeAt(h))){if(!o){i=h;break}}else o=!1;if(-1===i){if(-1===r)return".";i=r}return e.slice(0,i)},basename(e,t){void 0!==t&&b(t,"ext"),b(e,"path");let r,s=0,n=-1,i=!0;if(e.length>=2&&A(e.charCodeAt(0))&&e.charCodeAt(1)===p&&(s=2),void 0!==t&&t.length>0&&t.length<=e.length){if(t===e)return"";let o=t.length-1,h=-1;for(r=e.length-1;r>=s;--r){const a=e.charCodeAt(r);if(w(a)){if(!i){s=r+1;break}}else-1===h&&(i=!1,h=r+1),o>=0&&(a===t.charCodeAt(o)?-1===--o&&(n=r):(o=-1,n=h))}return s===n?n=h:-1===n&&(n=e.length),e.slice(s,n)}for(r=e.length-1;r>=s;--r)if(w(e.charCodeAt(r))){if(!i){s=r+1;break}}else-1===n&&(i=!1,n=r+1);return-1===n?"":e.slice(s,n)},extname(e){b(e,"path");let t=0,r=-1,s=0,n=-1,i=!0,o=0;e.length>=2&&e.charCodeAt(1)===p&&A(e.charCodeAt(0))&&(t=s=2);for(let h=e.length-1;h>=t;--h){const t=e.charCodeAt(h);if(w(t)){if(!i){s=h+1;break}}else-1===n&&(i=!1,n=h+1),t===d?-1===r?r=h:1!==o&&(o=1):-1!==r&&(o=-1)}return-1===r||-1===n||0===o||1===o&&r===n-1&&r===s+1?"":e.slice(r,n)},format:E.bind(null,"\\"),parse(e){b(e,"path");const t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;const r=e.length;let s=0,n=e.charCodeAt(0);if(1===r)return w(n)?(t.root=t.dir=e,t):(t.base=t.name=e,t);if(w(n)){if(s=1,w(e.charCodeAt(1))){let t=2,n=t;while(t0&&(t.root=e.slice(0,s));let i=-1,o=s,h=-1,a=!0,l=e.length-1,c=0;for(;l>=s;--l)if(n=e.charCodeAt(l),w(n)){if(!a){o=l+1;break}}else-1===h&&(a=!1,h=l+1),n===d?-1===i?i=l:1!==c&&(c=1):-1!==i&&(c=-1);return-1!==h&&(-1===i||0===c||1===c&&i===h-1&&i===o+1?t.base=t.name=e.slice(o,h):(t.name=e.slice(o,i),t.base=e.slice(o,h),t.ext=e.slice(i,h))),t.dir=o>0&&o!==s?e.slice(0,o-1):t.root,t},sep:"\\",delimiter:";",win32:null,posix:null},O=(()=>{if(C){const e=/\\/g;return()=>{const t=i().replace(e,"/");return t.slice(t.indexOf("/"))}}return()=>i()})(),D={resolve(...e){let t="",r=!1;for(let s=e.length-1;s>=-1&&!r;s--){const n=s>=0?e[s]:O();b(n,"path"),0!==n.length&&(t=`${n}/${t}`,r=n.charCodeAt(0)===f)}return t=S(t,!r,"/",y),r?`/${t}`:t.length>0?t:"."},normalize(e){if(b(e,"path"),0===e.length)return".";const t=e.charCodeAt(0)===f,r=e.charCodeAt(e.length-1)===f;return e=S(e,!t,"/",y),0===e.length?t?"/":r?"./":".":(r&&(e+="/"),t?`/${e}`:e)},isAbsolute(e){return b(e,"path"),e.length>0&&e.charCodeAt(0)===f},join(...e){if(0===e.length)return".";let t;for(let r=0;r0&&(void 0===t?t=s:t+=`/${s}`)}return void 0===t?".":D.normalize(t)},relative(e,t){if(b(e,"from"),b(t,"to"),e===t)return"";if(e=D.resolve(e),t=D.resolve(t),e===t)return"";const r=1,s=e.length,n=s-r,i=1,o=t.length-i,h=nh){if(t.charCodeAt(i+l)===f)return t.slice(i+l+1);if(0===l)return t.slice(i+l)}else n>h&&(e.charCodeAt(r+l)===f?a=l:0===l&&(a=0));let c="";for(l=r+a+1;l<=s;++l)l!==s&&e.charCodeAt(l)!==f||(c+=0===c.length?"..":"/..");return`${c}${t.slice(i+a)}`},toNamespacedPath(e){return e},dirname(e){if(b(e,"path"),0===e.length)return".";const t=e.charCodeAt(0)===f;let r=-1,s=!0;for(let n=e.length-1;n>=1;--n)if(e.charCodeAt(n)===f){if(!s){r=n;break}}else s=!1;return-1===r?t?"/":".":t&&1===r?"//":e.slice(0,r)},basename(e,t){void 0!==t&&b(t,"ext"),b(e,"path");let r,s=0,n=-1,i=!0;if(void 0!==t&&t.length>0&&t.length<=e.length){if(t===e)return"";let o=t.length-1,h=-1;for(r=e.length-1;r>=0;--r){const a=e.charCodeAt(r);if(a===f){if(!i){s=r+1;break}}else-1===h&&(i=!1,h=r+1),o>=0&&(a===t.charCodeAt(o)?-1===--o&&(n=r):(o=-1,n=h))}return s===n?n=h:-1===n&&(n=e.length),e.slice(s,n)}for(r=e.length-1;r>=0;--r)if(e.charCodeAt(r)===f){if(!i){s=r+1;break}}else-1===n&&(i=!1,n=r+1);return-1===n?"":e.slice(s,n)},extname(e){b(e,"path");let t=-1,r=0,s=-1,n=!0,i=0;for(let o=e.length-1;o>=0;--o){const h=e.charCodeAt(o);if(h!==f)-1===s&&(n=!1,s=o+1),h===d?-1===t?t=o:1!==i&&(i=1):-1!==t&&(i=-1);else if(!n){r=o+1;break}}return-1===t||-1===s||0===i||1===i&&t===s-1&&t===r+1?"":e.slice(t,s)},format:E.bind(null,"/"),parse(e){b(e,"path");const t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;const r=e.charCodeAt(0)===f;let s;r?(t.root="/",s=1):s=0;let n=-1,i=0,o=-1,h=!0,a=e.length-1,l=0;for(;a>=s;--a){const t=e.charCodeAt(a);if(t!==f)-1===o&&(h=!1,o=a+1),t===d?-1===n?n=a:1!==l&&(l=1):-1!==n&&(l=-1);else if(!h){i=a+1;break}}if(-1!==o){const s=0===i&&r?1:i;-1===n||0===l||1===l&&n===o-1&&n===i+1?t.base=t.name=e.slice(s,o):(t.name=e.slice(s,n),t.base=e.slice(s,o),t.ext=e.slice(n,o))}return i>0?t.dir=e.slice(0,i-1):r&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};D.win32=x.win32=x,D.posix=x.posix=D;const T=C?x.normalize:D.normalize,P=C?x.resolve:D.resolve,I=C?x.relative:D.relative,k=C?x.dirname:D.dirname,L=C?x.basename:D.basename,$=C?x.extname:D.extname,R=C?x.sep:D.sep},47606:(e,t,r)=>{r.d(t,{$L:()=>P,ED:()=>x,G6:()=>z,IJ:()=>D,OS:()=>j,dK:()=>R,dz:()=>O,fn:()=>F,gn:()=>k,i7:()=>U,li:()=>w,n2:()=>I,r:()=>B,tY:()=>T,tq:()=>L,un:()=>K,vU:()=>W});var s,n=r(25206);const i="en";let o,h,a=!1,l=!1,c=!1,u=!1,d=!1,f=!1,g=!1,p=!1,m=!1,v=!1,_=i,b=null,C=null;const w="object"===typeof self?self:"object"===typeof r.g?r.g:{};let y;"undefined"!==typeof w.vscode&&"undefined"!==typeof w.vscode.process?y=w.vscode.process:"undefined"!==typeof process&&(y=process);const A="string"===typeof(null===(s=null===y||void 0===y?void 0:y.versions)||void 0===s?void 0:s.electron),S=A&&"renderer"===(null===y||void 0===y?void 0:y.type);if("object"!==typeof navigator||S)if("object"===typeof y){a="win32"===y.platform,l="darwin"===y.platform,c="linux"===y.platform,u=c&&!!y.env["SNAP"]&&!!y.env["SNAP_REVISION"],g=A,m=!!y.env["CI"]||!!y.env["BUILD_ARTIFACTSTAGINGDIRECTORY"],o=i,_=i;const e=y.env["VSCODE_NLS_CONFIG"];if(e)try{const t=JSON.parse(e),r=t.availableLanguages["*"];o=t.locale,b=t.osLocale,_=r||i,C=t._translationsConfigFile}catch(H){}d=!0}else console.error("Unable to resolve platform.");else{h=navigator.userAgent,a=h.indexOf("Windows")>=0,l=h.indexOf("Macintosh")>=0,p=(h.indexOf("Macintosh")>=0||h.indexOf("iPad")>=0||h.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,c=h.indexOf("Linux")>=0,v=(null===h||void 0===h?void 0:h.indexOf("Mobi"))>=0,f=!0;const e=n.aj(n.NC({key:"ensureLoaderPluginIsLoaded",comment:["{Locked}"]},"_"));o=e||i,_=o,b=navigator.language}let E=0;l?E=1:a?E=3:c&&(E=2);const x=a,O=l,D=c,T=d,P=f,I=f&&"function"===typeof w.importScripts,k=p,L=v,$=h,R=_,N="function"===typeof w.postMessage&&!w.importScripts,F=(()=>{if(N){const e=[];w.addEventListener("message",(t=>{if(t.data&&t.data.vscodeScheduleAsyncWork)for(let r=0,s=e.length;r{const s=++t;e.push({id:s,callback:r}),w.postMessage({vscodeScheduleAsyncWork:s},"*")}}return e=>setTimeout(e)})(),j=l||p?2:a?1:3;let M=!0,q=!1;function B(){if(!q){q=!0;const e=new Uint8Array(2);e[0]=1,e[1]=2;const t=new Uint16Array(e.buffer);M=513===t[0]}return M}const U=!!($&&$.indexOf("Chrome")>=0),W=!!($&&$.indexOf("Firefox")>=0),z=!!(!U&&$&&$.indexOf("Safari")>=0),K=!!($&&$.indexOf("Edg/")>=0);$&&$.indexOf("Android")},68801:(e,t,r)=>{var s;r.d(t,{e:()=>s}),function(e){function t(e,t){if(e.start>=t.end||t.start>=e.end)return{start:0,end:0};const r=Math.max(e.start,t.start),s=Math.min(e.end,t.end);return s-r<=0?{start:0,end:0}:{start:r,end:s}}function r(e){return e.end-e.start<=0}function s(e,s){return!r(t(e,s))}function n(e,t){const s=[],n={start:e.start,end:Math.min(t.start,e.end)},i={start:Math.max(t.end,e.start),end:e.end};return r(n)||s.push(n),r(i)||s.push(i),s}e.intersect=t,e.isEmpty=r,e.intersects=s,e.relativeComplement=n}(s||(s={}))},21230:(e,t,r)=>{r.d(t,{AH:()=>v,DZ:()=>p,EZ:()=>g,Hx:()=>f,SF:()=>u,Vb:()=>y,XX:()=>m,Xy:()=>d,i3:()=>b,lX:()=>_});var s=r(1535),n=r(50200),i=r(92286),o=r(47606),h=r(61720),a=r(95896);function l(e){return(0,a.q)(e,!0)}class c{constructor(e){this._ignorePathCasing=e}compare(e,t,r=!1){return e===t?0:(0,h.qu)(this.getComparisonKey(e,r),this.getComparisonKey(t,r))}isEqual(e,t,r=!1){return e===t||!(!e||!t)&&this.getComparisonKey(e,r)===this.getComparisonKey(t,r)}getComparisonKey(e,t=!1){return e.with({path:this._ignorePathCasing(e)?e.path.toLowerCase():void 0,fragment:t?null:void 0}).toString()}isEqualOrParent(e,t,r=!1){if(e.scheme===t.scheme){if(e.scheme===n.lg.file)return s.KM(l(e),l(t),this._ignorePathCasing(e))&&e.query===t.query&&(r||e.fragment===t.fragment);if(C(e.authority,t.authority))return s.KM(e.path,t.path,this._ignorePathCasing(e),"/")&&e.query===t.query&&(r||e.fragment===t.fragment)}return!1}joinPath(e,...t){return a.o.joinPath(e,...t)}basenameOrAuthority(e){return g(e)||e.authority}basename(e){return i.KR.basename(e.path)}extname(e){return i.KR.extname(e.path)}dirname(e){if(0===e.path.length)return e;let t;return e.scheme===n.lg.file?t=a.o.file(i.XX(l(e))).path:(t=i.KR.dirname(e.path),e.authority&&t.length&&47!==t.charCodeAt(0)&&(console.error(`dirname("${e.toString})) resulted in a relative path`),t="/")),e.with({path:t})}normalizePath(e){if(!e.path.length)return e;let t;return t=e.scheme===n.lg.file?a.o.file(i.Fv(l(e))).path:i.KR.normalize(e.path),e.with({path:t})}relativePath(e,t){if(e.scheme!==t.scheme||!C(e.authority,t.authority))return;if(e.scheme===n.lg.file){const r=i.Gf(l(e),l(t));return o.ED?s.ej(r):r}let r=e.path||"/";const h=t.path||"/";if(this._ignorePathCasing(e)){let e=0;for(const t=Math.min(r.length,h.length);es.yj(r).length&&r[r.length-1]===t}{const t=e.path;return t.length>1&&47===t.charCodeAt(t.length-1)&&!/^[a-zA-Z]:(\/$|\\$)/.test(e.fsPath)}}removeTrailingPathSeparator(e,t=i.ir){return w(e,t)?e.with({path:e.path.substr(0,e.path.length-1)}):e}addTrailingPathSeparator(e,t=i.ir){let r=!1;if(e.scheme===n.lg.file){const n=l(e);r=void 0!==n&&n.length===s.yj(n).length&&n[n.length-1]===t}else{t="/";const s=e.path;r=1===s.length&&47===s.charCodeAt(s.length-1)}return r||w(e,t)?e:e.with({path:e.path+"/"})}}const u=new c((()=>!1)),d=(new c((e=>e.scheme!==n.lg.file||!o.IJ)),new c((e=>!0)),u.isEqual.bind(u)),f=(u.isEqualOrParent.bind(u),u.getComparisonKey.bind(u),u.basenameOrAuthority.bind(u)),g=u.basename.bind(u),p=u.extname.bind(u),m=u.dirname.bind(u),v=(u.joinPath.bind(u),u.normalizePath.bind(u)),_=u.relativePath.bind(u),b=u.resolvePath.bind(u),C=(u.isAbsolutePath.bind(u),u.isEqualAuthority.bind(u)),w=u.hasTrailingPathSeparator.bind(u);u.removeTrailingPathSeparator.bind(u),u.addTrailingPathSeparator.bind(u);var y;(function(e){function t(t){const r=new Map,s=t.path.substring(t.path.indexOf(";")+1,t.path.lastIndexOf(";"));s.split(";").forEach((e=>{const[t,s]=e.split(":");t&&s&&r.set(t,s)}));const n=t.path.substring(0,t.path.indexOf(";"));return n&&r.set(e.META_DATA_MIME,n),r}e.META_DATA_LABEL="label",e.META_DATA_DESCRIPTION="description",e.META_DATA_SIZE="size",e.META_DATA_MIME="mime",e.parseMetaData=t})(y||(y={}))},4225:(e,t,r)=>{r.d(t,{Rm:()=>o});var s=r(11271),n=r(70959);class i{constructor(e,t,r,s,n,i,o){this._forceIntegerValues=e,this._scrollStateBrand=void 0,this._forceIntegerValues&&(t|=0,r|=0,s|=0,n|=0,i|=0,o|=0),this.rawScrollLeft=s,this.rawScrollTop=o,t<0&&(t=0),s+t>r&&(s=r-t),s<0&&(s=0),n<0&&(n=0),o+n>i&&(o=i-n),o<0&&(o=0),this.width=t,this.scrollWidth=r,this.scrollLeft=s,this.height=n,this.scrollHeight=i,this.scrollTop=o}equals(e){return this.rawScrollLeft===e.rawScrollLeft&&this.rawScrollTop===e.rawScrollTop&&this.width===e.width&&this.scrollWidth===e.scrollWidth&&this.scrollLeft===e.scrollLeft&&this.height===e.height&&this.scrollHeight===e.scrollHeight&&this.scrollTop===e.scrollTop}withScrollDimensions(e,t){return new i(this._forceIntegerValues,"undefined"!==typeof e.width?e.width:this.width,"undefined"!==typeof e.scrollWidth?e.scrollWidth:this.scrollWidth,t?this.rawScrollLeft:this.scrollLeft,"undefined"!==typeof e.height?e.height:this.height,"undefined"!==typeof e.scrollHeight?e.scrollHeight:this.scrollHeight,t?this.rawScrollTop:this.scrollTop)}withScrollPosition(e){return new i(this._forceIntegerValues,this.width,this.scrollWidth,"undefined"!==typeof e.scrollLeft?e.scrollLeft:this.rawScrollLeft,this.height,this.scrollHeight,"undefined"!==typeof e.scrollTop?e.scrollTop:this.rawScrollTop)}createScrollEvent(e,t){const r=this.width!==e.width,s=this.scrollWidth!==e.scrollWidth,n=this.scrollLeft!==e.scrollLeft,i=this.height!==e.height,o=this.scrollHeight!==e.scrollHeight,h=this.scrollTop!==e.scrollTop;return{inSmoothScrolling:t,oldWidth:e.width,oldScrollWidth:e.scrollWidth,oldScrollLeft:e.scrollLeft,width:this.width,scrollWidth:this.scrollWidth,scrollLeft:this.scrollLeft,oldHeight:e.height,oldScrollHeight:e.scrollHeight,oldScrollTop:e.scrollTop,height:this.height,scrollHeight:this.scrollHeight,scrollTop:this.scrollTop,widthChanged:r,scrollWidthChanged:s,scrollLeftChanged:n,heightChanged:i,scrollHeightChanged:o,scrollTopChanged:h}}}class o extends n.JT{constructor(e){super(),this._scrollableBrand=void 0,this._onScroll=this._register(new s.Q5),this.onScroll=this._onScroll.event,this._smoothScrollDuration=e.smoothScrollDuration,this._scheduleAtNextAnimationFrame=e.scheduleAtNextAnimationFrame,this._state=new i(e.forceIntegerValues,0,0,0,0,0,0),this._smoothScrolling=null}dispose(){this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),super.dispose()}setSmoothScrollDuration(e){this._smoothScrollDuration=e}validateScrollPosition(e){return this._state.withScrollPosition(e)}getScrollDimensions(){return this._state}setScrollDimensions(e,t){var r;const s=this._state.withScrollDimensions(e,t);this._setState(s,Boolean(this._smoothScrolling)),null===(r=this._smoothScrolling)||void 0===r||r.acceptScrollDimensions(this._state)}getFutureScrollPosition(){return this._smoothScrolling?this._smoothScrolling.to:this._state}getCurrentScrollPosition(){return this._state}setScrollPositionNow(e){const t=this._state.withScrollPosition(e);this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),this._setState(t,!1)}setScrollPositionSmooth(e,t){if(0===this._smoothScrollDuration)return this.setScrollPositionNow(e);if(this._smoothScrolling){e={scrollLeft:"undefined"===typeof e.scrollLeft?this._smoothScrolling.to.scrollLeft:e.scrollLeft,scrollTop:"undefined"===typeof e.scrollTop?this._smoothScrolling.to.scrollTop:e.scrollTop};const r=this._state.withScrollPosition(e);if(this._smoothScrolling.to.scrollLeft===r.scrollLeft&&this._smoothScrolling.to.scrollTop===r.scrollTop)return;let s;s=t?new c(this._smoothScrolling.from,r,this._smoothScrolling.startTime,this._smoothScrolling.duration):this._smoothScrolling.combine(this._state,r,this._smoothScrollDuration),this._smoothScrolling.dispose(),this._smoothScrolling=s}else{const t=this._state.withScrollPosition(e);this._smoothScrolling=c.start(this._state,t,this._smoothScrollDuration)}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame((()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())}))}hasPendingScrollAnimation(){return Boolean(this._smoothScrolling)}_performSmoothScrolling(){if(!this._smoothScrolling)return;const e=this._smoothScrolling.tick(),t=this._state.withScrollPosition(e);return this._setState(t,!0),this._smoothScrolling?e.isDone?(this._smoothScrolling.dispose(),void(this._smoothScrolling=null)):void(this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame((()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())}))):void 0}_setState(e,t){const r=this._state;r.equals(e)||(this._state=e,this._onScroll.fire(this._state.createScrollEvent(r,t)))}}class h{constructor(e,t,r){this.scrollLeft=e,this.scrollTop=t,this.isDone=r}}function a(e,t){const r=t-e;return function(t){return e+r*d(t)}}function l(e,t,r){return function(s){return s2.5*r){let s,n;return e{r.d(t,{o:()=>n});var s=r(61720);function n(e,t){if(e&&""!==e[0]){const r=i(e,t,"-"),n=i(e,t,"_");return r&&!n?o(e,t,"-"):!r&&n?o(e,t,"_"):e[0].toUpperCase()===e[0]?t.toUpperCase():e[0].toLowerCase()===e[0]?t.toLowerCase():s.Kw(e[0][0])&&t.length>0?t[0].toUpperCase()+t.substr(1):e[0][0].toUpperCase()!==e[0][0]&&t.length>0?t[0].toLowerCase()+t.substr(1):t}return t}function i(e,t,r){const s=-1!==e[0].indexOf(r)&&-1!==t.indexOf(r);return s&&e[0].split(r).length===t.split(r).length}function o(e,t,r){const s=t.split(r),i=e[0].split(r);let o="";return s.forEach(((e,t)=>{o+=n([i[t]],e)+r})),o.slice(0,-1)}},72235:(e,t,r)=>{r.d(t,{Z:()=>i});var s,n=r(61720);(function(e){e[e["Ignore"]=0]="Ignore",e[e["Info"]=1]="Info",e[e["Warning"]=2]="Warning",e[e["Error"]=3]="Error"})(s||(s={})),function(e){const t="error",r="warning",s="warn",i="info",o="ignore";function h(o){return o?n.qq(t,o)?e.Error:n.qq(r,o)||n.qq(s,o)?e.Warning:n.qq(i,o)?e.Info:e.Ignore:e.Ignore}function a(s){switch(s){case e.Error:return t;case e.Warning:return r;case e.Info:return i;default:return o}}e.fromValue=h,e.toString=a}(s||(s={}));const i=s},96729:(e,t,r)=>{r.d(t,{G:()=>n});const s=globalThis.performance&&"function"===typeof globalThis.performance.now;class n{static create(e){return new n(e)}constructor(e){this._now=s&&!1===e?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}elapsed(){return-1!==this._stopTime?this._stopTime-this._startTime:this._now()-this._startTime}}},61720:(e,t,r)=>{r.d(t,{$i:()=>H,B4:()=>he,C8:()=>Z,GF:()=>g,HO:()=>q,IO:()=>p,J_:()=>B,K7:()=>J,Kw:()=>Q,LC:()=>_,Mh:()=>P,P1:()=>I,PJ:()=>ee,Qe:()=>V,T5:()=>E,TT:()=>y,Ut:()=>z,V8:()=>b,W1:()=>j,WU:()=>a,YK:()=>L,YU:()=>l,ZG:()=>k,ZH:()=>R,ZK:()=>ae,ab:()=>G,c1:()=>Y,df:()=>O,ec:()=>c,j3:()=>u,j_:()=>S,m5:()=>o,mK:()=>x,mr:()=>m,oH:()=>ne,oL:()=>d,ok:()=>T,ow:()=>C,qq:()=>D,qu:()=>w,rL:()=>$,uS:()=>X,un:()=>f,uq:()=>v,vH:()=>M,vU:()=>le,zY:()=>A});var s,n=r(60857),i=r(21815);function o(e){return!e||"string"!==typeof e||0===e.trim().length}const h=/{(\d+)}/g;function a(e,...t){return 0===t.length?e:e.replace(h,(function(e,r){const s=parseInt(r,10);return isNaN(s)||s<0||s>=t.length?e:t[s]}))}function l(e){return e.replace(/[<>&]/g,(function(e){switch(e){case"<":return"<";case">":return">";case"&":return"&";default:return e}}))}function c(e){return e.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g,"\\$&")}function u(e,t){if(!e||!t)return e;const r=t.length;if(0===r||0===e.length)return e;let s=0;while(e.indexOf(t,s)===s)s+=r;return e.substring(s)}function d(e,t){if(!e||!t)return e;const r=t.length,s=e.length;if(0===r||0===s)return e;let n=s,i=-1;while(1){if(i=e.lastIndexOf(t,n-1),-1===i||i+r!==n)break;if(0===i)return"";n=i}return e.substring(0,n)}function f(e){return e.replace(/[\-\\\{\}\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&").replace(/[\*]/g,".*")}function g(e,t,r={}){if(!e)throw new Error("Cannot create regex from empty string");t||(e=c(e)),r.wholeWord&&(/\B/.test(e.charAt(0))||(e="\\b"+e),/\B/.test(e.charAt(e.length-1))||(e+="\\b"));let s="";return r.global&&(s+="g"),r.matchCase||(s+="i"),r.multiline&&(s+="m"),r.unicode&&(s+="u"),new RegExp(e,s)}function p(e){if("^"===e.source||"^$"===e.source||"$"===e.source||"^\\s*$"===e.source)return!1;const t=e.exec("");return!(!t||0!==e.lastIndex)}function m(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")}function v(e){return e.split(/\r\n|\r|\n/)}function _(e){for(let t=0,r=e.length;t=0;r--){const t=e.charCodeAt(r);if(32!==t&&9!==t)return r}return-1}function w(e,t){return et?1:0}function y(e,t,r=0,s=e.length,n=0,i=t.length){for(;ri)return 1}const o=s-r,h=i-n;return oh?1:0}function A(e,t){return S(e,t,0,e.length,0,t.length)}function S(e,t,r=0,s=e.length,n=0,i=t.length){for(;r=128||h>=128)return y(e.toLowerCase(),t.toLowerCase(),r,s,n,i);x(o)&&(o-=32),x(h)&&(h-=32);const a=o-h;if(0!==a)return a}const o=s-r,h=i-n;return oh?1:0}function E(e){return e>=48&&e<=57}function x(e){return e>=97&&e<=122}function O(e){return e>=65&&e<=90}function D(e,t){return e.length===t.length&&0===S(e,t)}function T(e,t){const r=t.length;return!(t.length>e.length)&&0===S(e,t,0,r)}function P(e,t){const r=Math.min(e.length,t.length);let s;for(s=0;s1){const s=e.charCodeAt(t-2);if(k(s))return $(s,r)}return r}class F{get offset(){return this._offset}constructor(e,t=0){this._str=e,this._len=e.length,this._offset=t}setOffset(e){this._offset=e}prevCodePoint(){const e=N(this._str,this._offset);return this._offset-=e>=65536?2:1,e}nextCodePoint(){const e=R(this._str,this._len,this._offset);return this._offset+=e>=65536?2:1,e}eol(){return this._offset>=this._len}}class j{get offset(){return this._iterator.offset}constructor(e,t=0){this._iterator=new F(e,t)}nextGraphemeLength(){const e=re.getInstance(),t=this._iterator,r=t.offset;let s=e.getGraphemeBreakType(t.nextCodePoint());while(!t.eol()){const r=t.offset,n=e.getGraphemeBreakType(t.nextCodePoint());if(te(s,n)){t.setOffset(r);break}s=n}return t.offset-r}prevGraphemeLength(){const e=re.getInstance(),t=this._iterator,r=t.offset;let s=e.getGraphemeBreakType(t.prevCodePoint());while(t.offset>0){const r=t.offset,n=e.getGraphemeBreakType(t.prevCodePoint());if(te(n,s)){t.setOffset(r);break}s=n}return r-t.offset}eol(){return this._iterator.eol()}}function M(e,t){const r=new j(e,t);return r.nextGraphemeLength()}function q(e,t){const r=new j(e,t);return r.prevGraphemeLength()}function B(e,t){t>0&&L(e.charCodeAt(t))&&t--;const r=t+M(e,t),s=r-q(e,r);return[s,r]}let U;function W(){return/(?:[\u05BE\u05C0\u05C3\u05C6\u05D0-\u05F4\u0608\u060B\u060D\u061B-\u064A\u066D-\u066F\u0671-\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u0710\u0712-\u072F\u074D-\u07A5\u07B1-\u07EA\u07F4\u07F5\u07FA\u07FE-\u0815\u081A\u0824\u0828\u0830-\u0858\u085E-\u088E\u08A0-\u08C9\u200F\uFB1D\uFB1F-\uFB28\uFB2A-\uFD3D\uFD50-\uFDC7\uFDF0-\uFDFC\uFE70-\uFEFC]|\uD802[\uDC00-\uDD1B\uDD20-\uDE00\uDE10-\uDE35\uDE40-\uDEE4\uDEEB-\uDF35\uDF40-\uDFFF]|\uD803[\uDC00-\uDD23\uDE80-\uDEA9\uDEAD-\uDF45\uDF51-\uDF81\uDF86-\uDFF6]|\uD83A[\uDC00-\uDCCF\uDD00-\uDD43\uDD4B-\uDFFF]|\uD83B[\uDC00-\uDEBB])/}function z(e){return U||(U=W()),U.test(e)}const K=/^[\t\n\r\x20-\x7E]*$/;function H(e){return K.test(e)}const V=/[\u2028\u2029]/;function G(e){return V.test(e)}function J(e){return e>=11904&&e<=55215||e>=63744&&e<=64255||e>=65281&&e<=65374}function Z(e){return e>=127462&&e<=127487||8986===e||8987===e||9200===e||9203===e||e>=9728&&e<=10175||11088===e||11093===e||e>=127744&&e<=128591||e>=128640&&e<=128764||e>=128992&&e<=129008||e>=129280&&e<=129535||e>=129648&&e<=129782}const Y=String.fromCharCode(65279);function X(e){return!!(e&&e.length>0&&65279===e.charCodeAt(0))}function Q(e,t=!1){return!!e&&(t&&(e=e.replace(/\\./g,"")),e.toLowerCase()!==e)}function ee(e){const t=26;return e%=2*t,et[3*s+1]))return t[3*s+2];s=2*s+1}return 0}}function se(){return JSON.parse("[0,0,0,51229,51255,12,44061,44087,12,127462,127487,6,7083,7085,5,47645,47671,12,54813,54839,12,128678,128678,14,3270,3270,5,9919,9923,14,45853,45879,12,49437,49463,12,53021,53047,12,71216,71218,7,128398,128399,14,129360,129374,14,2519,2519,5,4448,4519,9,9742,9742,14,12336,12336,14,44957,44983,12,46749,46775,12,48541,48567,12,50333,50359,12,52125,52151,12,53917,53943,12,69888,69890,5,73018,73018,5,127990,127990,14,128558,128559,14,128759,128760,14,129653,129655,14,2027,2035,5,2891,2892,7,3761,3761,5,6683,6683,5,8293,8293,4,9825,9826,14,9999,9999,14,43452,43453,5,44509,44535,12,45405,45431,12,46301,46327,12,47197,47223,12,48093,48119,12,48989,49015,12,49885,49911,12,50781,50807,12,51677,51703,12,52573,52599,12,53469,53495,12,54365,54391,12,65279,65279,4,70471,70472,7,72145,72147,7,119173,119179,5,127799,127818,14,128240,128244,14,128512,128512,14,128652,128652,14,128721,128722,14,129292,129292,14,129445,129450,14,129734,129743,14,1476,1477,5,2366,2368,7,2750,2752,7,3076,3076,5,3415,3415,5,4141,4144,5,6109,6109,5,6964,6964,5,7394,7400,5,9197,9198,14,9770,9770,14,9877,9877,14,9968,9969,14,10084,10084,14,43052,43052,5,43713,43713,5,44285,44311,12,44733,44759,12,45181,45207,12,45629,45655,12,46077,46103,12,46525,46551,12,46973,46999,12,47421,47447,12,47869,47895,12,48317,48343,12,48765,48791,12,49213,49239,12,49661,49687,12,50109,50135,12,50557,50583,12,51005,51031,12,51453,51479,12,51901,51927,12,52349,52375,12,52797,52823,12,53245,53271,12,53693,53719,12,54141,54167,12,54589,54615,12,55037,55063,12,69506,69509,5,70191,70193,5,70841,70841,7,71463,71467,5,72330,72342,5,94031,94031,5,123628,123631,5,127763,127765,14,127941,127941,14,128043,128062,14,128302,128317,14,128465,128467,14,128539,128539,14,128640,128640,14,128662,128662,14,128703,128703,14,128745,128745,14,129004,129007,14,129329,129330,14,129402,129402,14,129483,129483,14,129686,129704,14,130048,131069,14,173,173,4,1757,1757,1,2200,2207,5,2434,2435,7,2631,2632,5,2817,2817,5,3008,3008,5,3201,3201,5,3387,3388,5,3542,3542,5,3902,3903,7,4190,4192,5,6002,6003,5,6439,6440,5,6765,6770,7,7019,7027,5,7154,7155,7,8205,8205,13,8505,8505,14,9654,9654,14,9757,9757,14,9792,9792,14,9852,9853,14,9890,9894,14,9937,9937,14,9981,9981,14,10035,10036,14,11035,11036,14,42654,42655,5,43346,43347,7,43587,43587,5,44006,44007,7,44173,44199,12,44397,44423,12,44621,44647,12,44845,44871,12,45069,45095,12,45293,45319,12,45517,45543,12,45741,45767,12,45965,45991,12,46189,46215,12,46413,46439,12,46637,46663,12,46861,46887,12,47085,47111,12,47309,47335,12,47533,47559,12,47757,47783,12,47981,48007,12,48205,48231,12,48429,48455,12,48653,48679,12,48877,48903,12,49101,49127,12,49325,49351,12,49549,49575,12,49773,49799,12,49997,50023,12,50221,50247,12,50445,50471,12,50669,50695,12,50893,50919,12,51117,51143,12,51341,51367,12,51565,51591,12,51789,51815,12,52013,52039,12,52237,52263,12,52461,52487,12,52685,52711,12,52909,52935,12,53133,53159,12,53357,53383,12,53581,53607,12,53805,53831,12,54029,54055,12,54253,54279,12,54477,54503,12,54701,54727,12,54925,54951,12,55149,55175,12,68101,68102,5,69762,69762,7,70067,70069,7,70371,70378,5,70720,70721,7,71087,71087,5,71341,71341,5,71995,71996,5,72249,72249,7,72850,72871,5,73109,73109,5,118576,118598,5,121505,121519,5,127245,127247,14,127568,127569,14,127777,127777,14,127872,127891,14,127956,127967,14,128015,128016,14,128110,128172,14,128259,128259,14,128367,128368,14,128424,128424,14,128488,128488,14,128530,128532,14,128550,128551,14,128566,128566,14,128647,128647,14,128656,128656,14,128667,128673,14,128691,128693,14,128715,128715,14,128728,128732,14,128752,128752,14,128765,128767,14,129096,129103,14,129311,129311,14,129344,129349,14,129394,129394,14,129413,129425,14,129466,129471,14,129511,129535,14,129664,129666,14,129719,129722,14,129760,129767,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2307,2307,7,2382,2383,7,2497,2500,5,2563,2563,7,2677,2677,5,2763,2764,7,2879,2879,5,2914,2915,5,3021,3021,5,3142,3144,5,3263,3263,5,3285,3286,5,3398,3400,7,3530,3530,5,3633,3633,5,3864,3865,5,3974,3975,5,4155,4156,7,4229,4230,5,5909,5909,7,6078,6085,7,6277,6278,5,6451,6456,7,6744,6750,5,6846,6846,5,6972,6972,5,7074,7077,5,7146,7148,7,7222,7223,5,7416,7417,5,8234,8238,4,8417,8417,5,9000,9000,14,9203,9203,14,9730,9731,14,9748,9749,14,9762,9763,14,9776,9783,14,9800,9811,14,9831,9831,14,9872,9873,14,9882,9882,14,9900,9903,14,9929,9933,14,9941,9960,14,9974,9974,14,9989,9989,14,10006,10006,14,10062,10062,14,10160,10160,14,11647,11647,5,12953,12953,14,43019,43019,5,43232,43249,5,43443,43443,5,43567,43568,7,43696,43696,5,43765,43765,7,44013,44013,5,44117,44143,12,44229,44255,12,44341,44367,12,44453,44479,12,44565,44591,12,44677,44703,12,44789,44815,12,44901,44927,12,45013,45039,12,45125,45151,12,45237,45263,12,45349,45375,12,45461,45487,12,45573,45599,12,45685,45711,12,45797,45823,12,45909,45935,12,46021,46047,12,46133,46159,12,46245,46271,12,46357,46383,12,46469,46495,12,46581,46607,12,46693,46719,12,46805,46831,12,46917,46943,12,47029,47055,12,47141,47167,12,47253,47279,12,47365,47391,12,47477,47503,12,47589,47615,12,47701,47727,12,47813,47839,12,47925,47951,12,48037,48063,12,48149,48175,12,48261,48287,12,48373,48399,12,48485,48511,12,48597,48623,12,48709,48735,12,48821,48847,12,48933,48959,12,49045,49071,12,49157,49183,12,49269,49295,12,49381,49407,12,49493,49519,12,49605,49631,12,49717,49743,12,49829,49855,12,49941,49967,12,50053,50079,12,50165,50191,12,50277,50303,12,50389,50415,12,50501,50527,12,50613,50639,12,50725,50751,12,50837,50863,12,50949,50975,12,51061,51087,12,51173,51199,12,51285,51311,12,51397,51423,12,51509,51535,12,51621,51647,12,51733,51759,12,51845,51871,12,51957,51983,12,52069,52095,12,52181,52207,12,52293,52319,12,52405,52431,12,52517,52543,12,52629,52655,12,52741,52767,12,52853,52879,12,52965,52991,12,53077,53103,12,53189,53215,12,53301,53327,12,53413,53439,12,53525,53551,12,53637,53663,12,53749,53775,12,53861,53887,12,53973,53999,12,54085,54111,12,54197,54223,12,54309,54335,12,54421,54447,12,54533,54559,12,54645,54671,12,54757,54783,12,54869,54895,12,54981,55007,12,55093,55119,12,55243,55291,10,66045,66045,5,68325,68326,5,69688,69702,5,69817,69818,5,69957,69958,7,70089,70092,5,70198,70199,5,70462,70462,5,70502,70508,5,70750,70750,5,70846,70846,7,71100,71101,5,71230,71230,7,71351,71351,5,71737,71738,5,72000,72000,7,72160,72160,5,72273,72278,5,72752,72758,5,72882,72883,5,73031,73031,5,73461,73462,7,94192,94193,7,119149,119149,7,121403,121452,5,122915,122916,5,126980,126980,14,127358,127359,14,127535,127535,14,127759,127759,14,127771,127771,14,127792,127793,14,127825,127867,14,127897,127899,14,127945,127945,14,127985,127986,14,128000,128007,14,128021,128021,14,128066,128100,14,128184,128235,14,128249,128252,14,128266,128276,14,128335,128335,14,128379,128390,14,128407,128419,14,128444,128444,14,128481,128481,14,128499,128499,14,128526,128526,14,128536,128536,14,128543,128543,14,128556,128556,14,128564,128564,14,128577,128580,14,128643,128645,14,128649,128649,14,128654,128654,14,128660,128660,14,128664,128664,14,128675,128675,14,128686,128689,14,128695,128696,14,128705,128709,14,128717,128719,14,128725,128725,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129009,129023,14,129160,129167,14,129296,129304,14,129320,129327,14,129340,129342,14,129356,129356,14,129388,129392,14,129399,129400,14,129404,129407,14,129432,129442,14,129454,129455,14,129473,129474,14,129485,129487,14,129648,129651,14,129659,129660,14,129671,129679,14,129709,129711,14,129728,129730,14,129751,129753,14,129776,129782,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2274,2274,1,2363,2363,7,2377,2380,7,2402,2403,5,2494,2494,5,2507,2508,7,2558,2558,5,2622,2624,7,2641,2641,5,2691,2691,7,2759,2760,5,2786,2787,5,2876,2876,5,2881,2884,5,2901,2902,5,3006,3006,5,3014,3016,7,3072,3072,5,3134,3136,5,3157,3158,5,3260,3260,5,3266,3266,5,3274,3275,7,3328,3329,5,3391,3392,7,3405,3405,5,3457,3457,5,3536,3537,7,3551,3551,5,3636,3642,5,3764,3772,5,3895,3895,5,3967,3967,7,3993,4028,5,4146,4151,5,4182,4183,7,4226,4226,5,4253,4253,5,4957,4959,5,5940,5940,7,6070,6070,7,6087,6088,7,6158,6158,4,6432,6434,5,6448,6449,7,6679,6680,5,6742,6742,5,6754,6754,5,6783,6783,5,6912,6915,5,6966,6970,5,6978,6978,5,7042,7042,7,7080,7081,5,7143,7143,7,7150,7150,7,7212,7219,5,7380,7392,5,7412,7412,5,8203,8203,4,8232,8232,4,8265,8265,14,8400,8412,5,8421,8432,5,8617,8618,14,9167,9167,14,9200,9200,14,9410,9410,14,9723,9726,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9774,14,9786,9786,14,9794,9794,14,9823,9823,14,9828,9828,14,9833,9850,14,9855,9855,14,9875,9875,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9935,9935,14,9939,9939,14,9962,9962,14,9972,9972,14,9978,9978,14,9986,9986,14,9997,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10133,10135,14,10548,10549,14,11093,11093,14,12330,12333,5,12441,12442,5,42608,42610,5,43010,43010,5,43045,43046,5,43188,43203,7,43302,43309,5,43392,43394,5,43446,43449,5,43493,43493,5,43571,43572,7,43597,43597,7,43703,43704,5,43756,43757,5,44003,44004,7,44009,44010,7,44033,44059,12,44089,44115,12,44145,44171,12,44201,44227,12,44257,44283,12,44313,44339,12,44369,44395,12,44425,44451,12,44481,44507,12,44537,44563,12,44593,44619,12,44649,44675,12,44705,44731,12,44761,44787,12,44817,44843,12,44873,44899,12,44929,44955,12,44985,45011,12,45041,45067,12,45097,45123,12,45153,45179,12,45209,45235,12,45265,45291,12,45321,45347,12,45377,45403,12,45433,45459,12,45489,45515,12,45545,45571,12,45601,45627,12,45657,45683,12,45713,45739,12,45769,45795,12,45825,45851,12,45881,45907,12,45937,45963,12,45993,46019,12,46049,46075,12,46105,46131,12,46161,46187,12,46217,46243,12,46273,46299,12,46329,46355,12,46385,46411,12,46441,46467,12,46497,46523,12,46553,46579,12,46609,46635,12,46665,46691,12,46721,46747,12,46777,46803,12,46833,46859,12,46889,46915,12,46945,46971,12,47001,47027,12,47057,47083,12,47113,47139,12,47169,47195,12,47225,47251,12,47281,47307,12,47337,47363,12,47393,47419,12,47449,47475,12,47505,47531,12,47561,47587,12,47617,47643,12,47673,47699,12,47729,47755,12,47785,47811,12,47841,47867,12,47897,47923,12,47953,47979,12,48009,48035,12,48065,48091,12,48121,48147,12,48177,48203,12,48233,48259,12,48289,48315,12,48345,48371,12,48401,48427,12,48457,48483,12,48513,48539,12,48569,48595,12,48625,48651,12,48681,48707,12,48737,48763,12,48793,48819,12,48849,48875,12,48905,48931,12,48961,48987,12,49017,49043,12,49073,49099,12,49129,49155,12,49185,49211,12,49241,49267,12,49297,49323,12,49353,49379,12,49409,49435,12,49465,49491,12,49521,49547,12,49577,49603,12,49633,49659,12,49689,49715,12,49745,49771,12,49801,49827,12,49857,49883,12,49913,49939,12,49969,49995,12,50025,50051,12,50081,50107,12,50137,50163,12,50193,50219,12,50249,50275,12,50305,50331,12,50361,50387,12,50417,50443,12,50473,50499,12,50529,50555,12,50585,50611,12,50641,50667,12,50697,50723,12,50753,50779,12,50809,50835,12,50865,50891,12,50921,50947,12,50977,51003,12,51033,51059,12,51089,51115,12,51145,51171,12,51201,51227,12,51257,51283,12,51313,51339,12,51369,51395,12,51425,51451,12,51481,51507,12,51537,51563,12,51593,51619,12,51649,51675,12,51705,51731,12,51761,51787,12,51817,51843,12,51873,51899,12,51929,51955,12,51985,52011,12,52041,52067,12,52097,52123,12,52153,52179,12,52209,52235,12,52265,52291,12,52321,52347,12,52377,52403,12,52433,52459,12,52489,52515,12,52545,52571,12,52601,52627,12,52657,52683,12,52713,52739,12,52769,52795,12,52825,52851,12,52881,52907,12,52937,52963,12,52993,53019,12,53049,53075,12,53105,53131,12,53161,53187,12,53217,53243,12,53273,53299,12,53329,53355,12,53385,53411,12,53441,53467,12,53497,53523,12,53553,53579,12,53609,53635,12,53665,53691,12,53721,53747,12,53777,53803,12,53833,53859,12,53889,53915,12,53945,53971,12,54001,54027,12,54057,54083,12,54113,54139,12,54169,54195,12,54225,54251,12,54281,54307,12,54337,54363,12,54393,54419,12,54449,54475,12,54505,54531,12,54561,54587,12,54617,54643,12,54673,54699,12,54729,54755,12,54785,54811,12,54841,54867,12,54897,54923,12,54953,54979,12,55009,55035,12,55065,55091,12,55121,55147,12,55177,55203,12,65024,65039,5,65520,65528,4,66422,66426,5,68152,68154,5,69291,69292,5,69633,69633,5,69747,69748,5,69811,69814,5,69826,69826,5,69932,69932,7,70016,70017,5,70079,70080,7,70095,70095,5,70196,70196,5,70367,70367,5,70402,70403,7,70464,70464,5,70487,70487,5,70709,70711,7,70725,70725,7,70833,70834,7,70843,70844,7,70849,70849,7,71090,71093,5,71103,71104,5,71227,71228,7,71339,71339,5,71344,71349,5,71458,71461,5,71727,71735,5,71985,71989,7,71998,71998,5,72002,72002,7,72154,72155,5,72193,72202,5,72251,72254,5,72281,72283,5,72344,72345,5,72766,72766,7,72874,72880,5,72885,72886,5,73023,73029,5,73104,73105,5,73111,73111,5,92912,92916,5,94095,94098,5,113824,113827,4,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,125252,125258,5,127183,127183,14,127340,127343,14,127377,127386,14,127491,127503,14,127548,127551,14,127744,127756,14,127761,127761,14,127769,127769,14,127773,127774,14,127780,127788,14,127796,127797,14,127820,127823,14,127869,127869,14,127894,127895,14,127902,127903,14,127943,127943,14,127947,127950,14,127972,127972,14,127988,127988,14,127992,127994,14,128009,128011,14,128019,128019,14,128023,128041,14,128064,128064,14,128102,128107,14,128174,128181,14,128238,128238,14,128246,128247,14,128254,128254,14,128264,128264,14,128278,128299,14,128329,128330,14,128348,128359,14,128371,128377,14,128392,128393,14,128401,128404,14,128421,128421,14,128433,128434,14,128450,128452,14,128476,128478,14,128483,128483,14,128495,128495,14,128506,128506,14,128519,128520,14,128528,128528,14,128534,128534,14,128538,128538,14,128540,128542,14,128544,128549,14,128552,128555,14,128557,128557,14,128560,128563,14,128565,128565,14,128567,128576,14,128581,128591,14,128641,128642,14,128646,128646,14,128648,128648,14,128650,128651,14,128653,128653,14,128655,128655,14,128657,128659,14,128661,128661,14,128663,128663,14,128665,128666,14,128674,128674,14,128676,128677,14,128679,128685,14,128690,128690,14,128694,128694,14,128697,128702,14,128704,128704,14,128710,128714,14,128716,128716,14,128720,128720,14,128723,128724,14,128726,128727,14,128733,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129008,129008,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129661,129663,14,129667,129670,14,129680,129685,14,129705,129708,14,129712,129718,14,129723,129727,14,129731,129733,14,129744,129750,14,129754,129759,14,129768,129775,14,129783,129791,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2192,2193,1,2250,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3132,3132,5,3137,3140,7,3146,3149,5,3170,3171,5,3202,3203,7,3262,3262,7,3264,3265,7,3267,3268,7,3271,3272,7,3276,3277,5,3298,3299,5,3330,3331,7,3390,3390,5,3393,3396,5,3402,3404,7,3406,3406,1,3426,3427,5,3458,3459,7,3535,3535,5,3538,3540,5,3544,3550,7,3570,3571,7,3635,3635,7,3655,3662,5,3763,3763,7,3784,3789,5,3893,3893,5,3897,3897,5,3953,3966,5,3968,3972,5,3981,3991,5,4038,4038,5,4145,4145,7,4153,4154,5,4157,4158,5,4184,4185,5,4209,4212,5,4228,4228,7,4237,4237,5,4352,4447,8,4520,4607,10,5906,5908,5,5938,5939,5,5970,5971,5,6068,6069,5,6071,6077,5,6086,6086,5,6089,6099,5,6155,6157,5,6159,6159,5,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6862,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7679,5,8204,8204,5,8206,8207,4,8233,8233,4,8252,8252,14,8288,8292,4,8294,8303,4,8413,8416,5,8418,8420,5,8482,8482,14,8596,8601,14,8986,8987,14,9096,9096,14,9193,9196,14,9199,9199,14,9201,9202,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9729,14,9732,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9775,9775,14,9784,9785,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9874,14,9876,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9934,14,9936,9936,14,9938,9938,14,9940,9940,14,9961,9961,14,9963,9967,14,9970,9971,14,9973,9973,14,9975,9977,14,9979,9980,14,9982,9985,14,9987,9988,14,9992,9996,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10083,14,10085,10087,14,10145,10145,14,10175,10175,14,11013,11015,14,11088,11088,14,11503,11505,5,11744,11775,5,12334,12335,5,12349,12349,14,12951,12951,14,42607,42607,5,42612,42621,5,42736,42737,5,43014,43014,5,43043,43044,7,43047,43047,7,43136,43137,7,43204,43205,5,43263,43263,5,43335,43345,5,43360,43388,8,43395,43395,7,43444,43445,7,43450,43451,7,43454,43456,7,43561,43566,5,43569,43570,5,43573,43574,5,43596,43596,5,43644,43644,5,43698,43700,5,43710,43711,5,43755,43755,7,43758,43759,7,43766,43766,5,44005,44005,5,44008,44008,5,44012,44012,7,44032,44032,11,44060,44060,11,44088,44088,11,44116,44116,11,44144,44144,11,44172,44172,11,44200,44200,11,44228,44228,11,44256,44256,11,44284,44284,11,44312,44312,11,44340,44340,11,44368,44368,11,44396,44396,11,44424,44424,11,44452,44452,11,44480,44480,11,44508,44508,11,44536,44536,11,44564,44564,11,44592,44592,11,44620,44620,11,44648,44648,11,44676,44676,11,44704,44704,11,44732,44732,11,44760,44760,11,44788,44788,11,44816,44816,11,44844,44844,11,44872,44872,11,44900,44900,11,44928,44928,11,44956,44956,11,44984,44984,11,45012,45012,11,45040,45040,11,45068,45068,11,45096,45096,11,45124,45124,11,45152,45152,11,45180,45180,11,45208,45208,11,45236,45236,11,45264,45264,11,45292,45292,11,45320,45320,11,45348,45348,11,45376,45376,11,45404,45404,11,45432,45432,11,45460,45460,11,45488,45488,11,45516,45516,11,45544,45544,11,45572,45572,11,45600,45600,11,45628,45628,11,45656,45656,11,45684,45684,11,45712,45712,11,45740,45740,11,45768,45768,11,45796,45796,11,45824,45824,11,45852,45852,11,45880,45880,11,45908,45908,11,45936,45936,11,45964,45964,11,45992,45992,11,46020,46020,11,46048,46048,11,46076,46076,11,46104,46104,11,46132,46132,11,46160,46160,11,46188,46188,11,46216,46216,11,46244,46244,11,46272,46272,11,46300,46300,11,46328,46328,11,46356,46356,11,46384,46384,11,46412,46412,11,46440,46440,11,46468,46468,11,46496,46496,11,46524,46524,11,46552,46552,11,46580,46580,11,46608,46608,11,46636,46636,11,46664,46664,11,46692,46692,11,46720,46720,11,46748,46748,11,46776,46776,11,46804,46804,11,46832,46832,11,46860,46860,11,46888,46888,11,46916,46916,11,46944,46944,11,46972,46972,11,47000,47000,11,47028,47028,11,47056,47056,11,47084,47084,11,47112,47112,11,47140,47140,11,47168,47168,11,47196,47196,11,47224,47224,11,47252,47252,11,47280,47280,11,47308,47308,11,47336,47336,11,47364,47364,11,47392,47392,11,47420,47420,11,47448,47448,11,47476,47476,11,47504,47504,11,47532,47532,11,47560,47560,11,47588,47588,11,47616,47616,11,47644,47644,11,47672,47672,11,47700,47700,11,47728,47728,11,47756,47756,11,47784,47784,11,47812,47812,11,47840,47840,11,47868,47868,11,47896,47896,11,47924,47924,11,47952,47952,11,47980,47980,11,48008,48008,11,48036,48036,11,48064,48064,11,48092,48092,11,48120,48120,11,48148,48148,11,48176,48176,11,48204,48204,11,48232,48232,11,48260,48260,11,48288,48288,11,48316,48316,11,48344,48344,11,48372,48372,11,48400,48400,11,48428,48428,11,48456,48456,11,48484,48484,11,48512,48512,11,48540,48540,11,48568,48568,11,48596,48596,11,48624,48624,11,48652,48652,11,48680,48680,11,48708,48708,11,48736,48736,11,48764,48764,11,48792,48792,11,48820,48820,11,48848,48848,11,48876,48876,11,48904,48904,11,48932,48932,11,48960,48960,11,48988,48988,11,49016,49016,11,49044,49044,11,49072,49072,11,49100,49100,11,49128,49128,11,49156,49156,11,49184,49184,11,49212,49212,11,49240,49240,11,49268,49268,11,49296,49296,11,49324,49324,11,49352,49352,11,49380,49380,11,49408,49408,11,49436,49436,11,49464,49464,11,49492,49492,11,49520,49520,11,49548,49548,11,49576,49576,11,49604,49604,11,49632,49632,11,49660,49660,11,49688,49688,11,49716,49716,11,49744,49744,11,49772,49772,11,49800,49800,11,49828,49828,11,49856,49856,11,49884,49884,11,49912,49912,11,49940,49940,11,49968,49968,11,49996,49996,11,50024,50024,11,50052,50052,11,50080,50080,11,50108,50108,11,50136,50136,11,50164,50164,11,50192,50192,11,50220,50220,11,50248,50248,11,50276,50276,11,50304,50304,11,50332,50332,11,50360,50360,11,50388,50388,11,50416,50416,11,50444,50444,11,50472,50472,11,50500,50500,11,50528,50528,11,50556,50556,11,50584,50584,11,50612,50612,11,50640,50640,11,50668,50668,11,50696,50696,11,50724,50724,11,50752,50752,11,50780,50780,11,50808,50808,11,50836,50836,11,50864,50864,11,50892,50892,11,50920,50920,11,50948,50948,11,50976,50976,11,51004,51004,11,51032,51032,11,51060,51060,11,51088,51088,11,51116,51116,11,51144,51144,11,51172,51172,11,51200,51200,11,51228,51228,11,51256,51256,11,51284,51284,11,51312,51312,11,51340,51340,11,51368,51368,11,51396,51396,11,51424,51424,11,51452,51452,11,51480,51480,11,51508,51508,11,51536,51536,11,51564,51564,11,51592,51592,11,51620,51620,11,51648,51648,11,51676,51676,11,51704,51704,11,51732,51732,11,51760,51760,11,51788,51788,11,51816,51816,11,51844,51844,11,51872,51872,11,51900,51900,11,51928,51928,11,51956,51956,11,51984,51984,11,52012,52012,11,52040,52040,11,52068,52068,11,52096,52096,11,52124,52124,11,52152,52152,11,52180,52180,11,52208,52208,11,52236,52236,11,52264,52264,11,52292,52292,11,52320,52320,11,52348,52348,11,52376,52376,11,52404,52404,11,52432,52432,11,52460,52460,11,52488,52488,11,52516,52516,11,52544,52544,11,52572,52572,11,52600,52600,11,52628,52628,11,52656,52656,11,52684,52684,11,52712,52712,11,52740,52740,11,52768,52768,11,52796,52796,11,52824,52824,11,52852,52852,11,52880,52880,11,52908,52908,11,52936,52936,11,52964,52964,11,52992,52992,11,53020,53020,11,53048,53048,11,53076,53076,11,53104,53104,11,53132,53132,11,53160,53160,11,53188,53188,11,53216,53216,11,53244,53244,11,53272,53272,11,53300,53300,11,53328,53328,11,53356,53356,11,53384,53384,11,53412,53412,11,53440,53440,11,53468,53468,11,53496,53496,11,53524,53524,11,53552,53552,11,53580,53580,11,53608,53608,11,53636,53636,11,53664,53664,11,53692,53692,11,53720,53720,11,53748,53748,11,53776,53776,11,53804,53804,11,53832,53832,11,53860,53860,11,53888,53888,11,53916,53916,11,53944,53944,11,53972,53972,11,54000,54000,11,54028,54028,11,54056,54056,11,54084,54084,11,54112,54112,11,54140,54140,11,54168,54168,11,54196,54196,11,54224,54224,11,54252,54252,11,54280,54280,11,54308,54308,11,54336,54336,11,54364,54364,11,54392,54392,11,54420,54420,11,54448,54448,11,54476,54476,11,54504,54504,11,54532,54532,11,54560,54560,11,54588,54588,11,54616,54616,11,54644,54644,11,54672,54672,11,54700,54700,11,54728,54728,11,54756,54756,11,54784,54784,11,54812,54812,11,54840,54840,11,54868,54868,11,54896,54896,11,54924,54924,11,54952,54952,11,54980,54980,11,55008,55008,11,55036,55036,11,55064,55064,11,55092,55092,11,55120,55120,11,55148,55148,11,55176,55176,11,55216,55238,9,64286,64286,5,65056,65071,5,65438,65439,5,65529,65531,4,66272,66272,5,68097,68099,5,68108,68111,5,68159,68159,5,68900,68903,5,69446,69456,5,69632,69632,7,69634,69634,7,69744,69744,5,69759,69761,5,69808,69810,7,69815,69816,7,69821,69821,1,69837,69837,1,69927,69931,5,69933,69940,5,70003,70003,5,70018,70018,7,70070,70078,5,70082,70083,1,70094,70094,7,70188,70190,7,70194,70195,7,70197,70197,7,70206,70206,5,70368,70370,7,70400,70401,5,70459,70460,5,70463,70463,7,70465,70468,7,70475,70477,7,70498,70499,7,70512,70516,5,70712,70719,5,70722,70724,5,70726,70726,5,70832,70832,5,70835,70840,5,70842,70842,5,70845,70845,5,70847,70848,5,70850,70851,5,71088,71089,7,71096,71099,7,71102,71102,7,71132,71133,5,71219,71226,5,71229,71229,5,71231,71232,5,71340,71340,7,71342,71343,7,71350,71350,7,71453,71455,5,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,118528,118573,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123566,123566,5,125136,125142,5,126976,126979,14,126981,127182,14,127184,127231,14,127279,127279,14,127344,127345,14,127374,127374,14,127405,127461,14,127489,127490,14,127514,127514,14,127538,127546,14,127561,127567,14,127570,127743,14,127757,127758,14,127760,127760,14,127762,127762,14,127766,127768,14,127770,127770,14,127772,127772,14,127775,127776,14,127778,127779,14,127789,127791,14,127794,127795,14,127798,127798,14,127819,127819,14,127824,127824,14,127868,127868,14,127870,127871,14,127892,127893,14,127896,127896,14,127900,127901,14,127904,127940,14,127942,127942,14,127944,127944,14,127946,127946,14,127951,127955,14,127968,127971,14,127973,127984,14,127987,127987,14,127989,127989,14,127991,127991,14,127995,127999,5,128008,128008,14,128012,128014,14,128017,128018,14,128020,128020,14,128022,128022,14,128042,128042,14,128063,128063,14,128065,128065,14,128101,128101,14,128108,128109,14,128173,128173,14,128182,128183,14,128236,128237,14,128239,128239,14,128245,128245,14,128248,128248,14,128253,128253,14,128255,128258,14,128260,128263,14,128265,128265,14,128277,128277,14,128300,128301,14,128326,128328,14,128331,128334,14,128336,128347,14,128360,128366,14,128369,128370,14,128378,128378,14,128391,128391,14,128394,128397,14,128400,128400,14,128405,128406,14,128420,128420,14,128422,128423,14,128425,128432,14,128435,128443,14,128445,128449,14,128453,128464,14,128468,128475,14,128479,128480,14,128482,128482,14,128484,128487,14,128489,128494,14,128496,128498,14,128500,128505,14,128507,128511,14,128513,128518,14,128521,128525,14,128527,128527,14,128529,128529,14,128533,128533,14,128535,128535,14,128537,128537,14]")}function ne(e,t){if(0===e)return 0;const r=ie(e,t);if(void 0!==r)return r;const s=new F(t,e);return s.prevCodePoint(),s.offset}function ie(e,t){const r=new F(t,e);let s=r.prevCodePoint();while(oe(s)||65039===s||8419===s){if(0===r.offset)return;s=r.prevCodePoint()}if(!Z(s))return;let n=r.offset;if(n>0){const e=r.prevCodePoint();8205===e&&(n=r.offset)}return n}function oe(e){return 127995<=e&&e<=127999}re._INSTANCE=null;const he=" ";class ae{static getInstance(e){return ae.cache.get(Array.from(e))}static getLocales(){return ae._locales.value}constructor(e){this.confusableDictionary=e}isAmbiguous(e){return this.confusableDictionary.has(e)}getPrimaryConfusable(e){return this.confusableDictionary.get(e)}getConfusableCodePoints(){return new Set(this.confusableDictionary.keys())}}s=ae,ae.ambiguousCharacterData=new i.o((()=>JSON.parse('{"_common":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,8218,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,8242,96,1370,96,1523,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71922,67,71913,67,65315,67,8557,67,8450,67,8493,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71919,87,71910,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,66293,90,71909,90,65338,90,8484,90,8488,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65297,49,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],"_default":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"cs":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"de":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"es":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"fr":[65374,126,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"it":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ja":[8211,45,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65292,44,65307,59],"ko":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pl":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pt-BR":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"qps-ploc":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ru":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"tr":[160,32,8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"zh-hans":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41],"zh-hant":[8211,45,65374,126,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65307,59]}'))),ae.cache=new n.t((e=>{function t(e){const t=new Map;for(let r=0;r!e.startsWith("_")&&e in i));0===h.length&&(h=["_default"]);for(const s of h){const e=t(i[s]);o=n(o,e)}const a=t(i["_common"]),l=r(a,o);return new ae(l)})),ae._locales=new i.o((()=>Object.keys(ae.ambiguousCharacterData.value).filter((e=>!e.startsWith("_")))));class le{static getRawData(){return JSON.parse("[9,10,11,12,13,32,127,160,173,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12288,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999]")}static getData(){return this._data||(this._data=new Set(le.getRawData())),this._data}static isInvisibleCharacter(e){return le.getData().has(e)}static get codePoints(){return le.getData()}}le._data=void 0},65338:(e,t,r)=>{r.d(t,{n:()=>s});const s=Symbol("MicrotaskDelay")},17141:(e,t,r)=>{r.d(t,{Id:()=>l});var s=r(61720);class n{constructor(){this._value="",this._pos=0}reset(e){return this._value=e,this._pos=0,this}next(){return this._pos+=1,this}hasNext(){return this._pos=0;t--,this._valueLen--){const e=this._value.charCodeAt(t);if(!(47===e||this._splitOnBackslash&&92===e))break}return this.next()}hasNext(){return this._to!1),t=(()=>!1)){return new l(new h(e,t))}static forStrings(){return new l(new n)}static forConfigKeys(){return new l(new i)}constructor(e){this._iter=e}clear(){this._root=void 0}set(e,t){const r=this._iter.reset(e);let s;this._root||(this._root=new a,this._root.segment=r.value());const n=[];s=this._root;while(1){const e=r.cmp(s.segment);if(e>0)s.left||(s.left=new a,s.left.segment=r.value()),n.push([-1,s]),s=s.left;else if(e<0)s.right||(s.right=new a,s.right.segment=r.value()),n.push([1,s]),s=s.right;else{if(!r.hasNext())break;r.next(),s.mid||(s.mid=new a,s.mid.segment=r.value()),n.push([0,s]),s=s.mid}}const i=s.value;s.value=t,s.key=e;for(let o=n.length-1;o>=0;o--){const e=n[o][1];e.updateHeight();const t=e.balanceFactor();if(t<-1||t>1){const t=n[o][0],r=n[o+1][0];if(1===t&&1===r)n[o][1]=e.rotateLeft();else if(-1===t&&-1===r)n[o][1]=e.rotateRight();else if(1===t&&-1===r)e.right=n[o+1][1]=n[o+1][1].rotateRight(),n[o][1]=e.rotateLeft();else{if(-1!==t||1!==r)throw new Error;e.left=n[o+1][1]=n[o+1][1].rotateLeft(),n[o][1]=e.rotateRight()}if(o>0)switch(n[o-1][0]){case-1:n[o-1][1].left=n[o][1];break;case 1:n[o-1][1].right=n[o][1];break;case 0:n[o-1][1].mid=n[o][1];break}else this._root=n[0][1]}}return i}get(e){var t;return null===(t=this._getNode(e))||void 0===t?void 0:t.value}_getNode(e){const t=this._iter.reset(e);let r=this._root;while(r){const e=t.cmp(r.segment);if(e>0)r=r.left;else if(e<0)r=r.right;else{if(!t.hasNext())break;t.next(),r=r.mid}}return r}has(e){const t=this._getNode(e);return!(void 0===(null===t||void 0===t?void 0:t.value)&&void 0===(null===t||void 0===t?void 0:t.mid))}delete(e){return this._delete(e,!1)}deleteSuperstr(e){return this._delete(e,!0)}_delete(e,t){var r;const s=this._iter.reset(e),n=[];let i=this._root;while(i){const e=s.cmp(i.segment);if(e>0)n.push([-1,i]),i=i.left;else if(e<0)n.push([1,i]),i=i.right;else{if(!s.hasNext())break;s.next(),n.push([0,i]),i=i.mid}}if(i){if(t?(i.left=void 0,i.mid=void 0,i.right=void 0,i.height=1):(i.key=void 0,i.value=void 0),!i.mid&&!i.value)if(i.left&&i.right){const e=this._min(i.right);if(e.key){const{key:t,value:r,segment:s}=e;this._delete(e.key,!1),i.key=t,i.value=r,i.segment=s}}else{const e=null!==(r=i.left)&&void 0!==r?r:i.right;if(n.length>0){const[t,r]=n[n.length-1];switch(t){case-1:r.left=e;break;case 0:r.mid=e;break;case 1:r.right=e;break}}else this._root=e}for(let e=n.length-1;e>=0;e--){const t=n[e][1];t.updateHeight();const r=t.balanceFactor();if(r>1?(t.right.balanceFactor()>=0||(t.right=t.right.rotateRight()),n[e][1]=t.rotateLeft()):r<-1&&(t.left.balanceFactor()<=0||(t.left=t.left.rotateLeft()),n[e][1]=t.rotateRight()),e>0)switch(n[e-1][0]){case-1:n[e-1][1].left=n[e][1];break;case 1:n[e-1][1].right=n[e][1];break;case 0:n[e-1][1].mid=n[e][1];break}else this._root=n[0][1]}}}_min(e){while(e.left)e=e.left;return e}findSubstr(e){const t=this._iter.reset(e);let r,s=this._root;while(s){const e=t.cmp(s.segment);if(e>0)s=s.left;else if(e<0)s=s.right;else{if(!t.hasNext())break;t.next(),r=s.value||r,s=s.mid}}return s&&s.value||r}findSuperstr(e){return this._findSuperstrOrElement(e,!1)}_findSuperstrOrElement(e,t){const r=this._iter.reset(e);let s=this._root;while(s){const e=r.cmp(s.segment);if(e>0)s=s.left;else if(e<0)s=s.right;else{if(!r.hasNext())return s.mid?this._entries(s.mid):t?s.value:void 0;r.next(),s=s.mid}}}forEach(e){for(const[t,r]of this)e(r,t)}*[Symbol.iterator](){yield*this._entries(this._root)}_entries(e){const t=[];return this._dfsEntries(e,t),t[Symbol.iterator]()}_dfsEntries(e,t){e&&(e.left&&this._dfsEntries(e.left,t),e.value&&t.push([e.key,e.value]),e.mid&&this._dfsEntries(e.mid,t),e.right&&this._dfsEntries(e.right,t))}}},99588:(e,t,r)=>{r.d(t,{k:()=>n});var s,n,i=r(8419);(function(e){function t(e){return e&&"object"===typeof e&&"string"===typeof e.id}e.isThemeColor=t})(s||(s={})),function(e){e.iconNameSegment="[A-Za-z0-9]+",e.iconNameExpression="[A-Za-z0-9-]+",e.iconModifierExpression="~[A-Za-z]+",e.iconNameCharacter="[A-Za-z0-9~-]";const t=new RegExp(`^(${e.iconNameExpression})(${e.iconModifierExpression})?$`);function r(e){const s=t.exec(e.id);if(!s)return r(i.l.error);const[,n,o]=s,h=["codicon","codicon-"+n];return o&&h.push("codicon-modifier-"+o.substring(1)),h}function n(e){return r(e).join(" ")}function o(e){return"."+r(e).join(".")}function h(e){return e&&"object"===typeof e&&"string"===typeof e.id&&("undefined"===typeof e.color||s.isThemeColor(e.color))}e.asClassNameArray=r,e.asClassName=n,e.asCSSSelector=o,e.isThemeIcon=h;const a=new RegExp(`^\\$\\((${e.iconNameExpression}(?:${e.iconModifierExpression})?)\\)$`);function l(e){const t=a.exec(e);if(!t)return;const[,r]=t;return{id:r}}function c(e){return{id:e}}function u(e,t){let r=e.id;const s=r.lastIndexOf("~");return-1!==s&&(r=r.substring(0,s)),t&&(r=`${r}~${t}`),{id:r}}function d(e){const t=e.id.lastIndexOf("~");if(-1!==t)return e.id.substring(t+1)}function f(e,t){var r,s;return e.id===t.id&&(null===(r=e.color)||void 0===r?void 0:r.id)===(null===(s=t.color)||void 0===s?void 0:s.id)}e.fromString=l,e.fromId=c,e.modify=u,e.getModifier=d,e.isEqual=f}(n||(n={}))},55455:(e,t,r)=>{function s(e){return"string"===typeof e}function n(e){return"object"===typeof e&&null!==e&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function i(e){const t=Object.getPrototypeOf(Uint8Array);return"object"===typeof e&&e instanceof t}function o(e){return"number"===typeof e&&!isNaN(e)}function h(e){return!!e&&"function"===typeof e[Symbol.iterator]}function a(e){return!0===e||!1===e}function l(e){return"undefined"===typeof e}function c(e){return!u(e)}function u(e){return l(e)||null===e}function d(e,t){if(!e)throw new Error(t?`Unexpected type, expected '${t}'`:"Unexpected type")}function f(e){if(u(e))throw new Error("Assertion Failed: argument is undefined or null");return e}function g(e){return"function"===typeof e}function p(e,t){const r=Math.min(e.length,t.length);for(let s=0;sc,D8:()=>p,HD:()=>s,Jp:()=>u,Kn:()=>n,M2:()=>_,TW:()=>h,cW:()=>f,f6:()=>v,fU:()=>i,hj:()=>o,jn:()=>a,mf:()=>g,o8:()=>l,p_:()=>d})},47396:(e,t,r)=>{function s(e){return e<0?0:e>255?255:0|e}function n(e){return e<0?0:e>4294967295?4294967295:0|e}r.d(t,{A:()=>n,K:()=>s})},95896:(e,t,r)=>{r.d(t,{o:()=>g,q:()=>C});var s=r(92286),n=r(47606);const i=/^\w[\w\d+.-]*$/,o=/^\//,h=/^\/\//;function a(e,t){if(!e.scheme&&t)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${e.authority}", path: "${e.path}", query: "${e.query}", fragment: "${e.fragment}"}`);if(e.scheme&&!i.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!o.test(e.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(h.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}function l(e,t){return e||t?e:"file"}function c(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==d&&(t=d+t):t=d;break}return t}const u="",d="/",f=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class g{static isUri(e){return e instanceof g||!!e&&("string"===typeof e.authority&&"string"===typeof e.fragment&&"string"===typeof e.path&&"string"===typeof e.query&&"string"===typeof e.scheme&&"string"===typeof e.fsPath&&"function"===typeof e.with&&"function"===typeof e.toString)}constructor(e,t,r,s,n,i=!1){"object"===typeof e?(this.scheme=e.scheme||u,this.authority=e.authority||u,this.path=e.path||u,this.query=e.query||u,this.fragment=e.fragment||u):(this.scheme=l(e,i),this.authority=t||u,this.path=c(this.scheme,r||u),this.query=s||u,this.fragment=n||u,a(this,i))}get fsPath(){return C(this,!1)}with(e){if(!e)return this;let{scheme:t,authority:r,path:s,query:n,fragment:i}=e;return void 0===t?t=this.scheme:null===t&&(t=u),void 0===r?r=this.authority:null===r&&(r=u),void 0===s?s=this.path:null===s&&(s=u),void 0===n?n=this.query:null===n&&(n=u),void 0===i?i=this.fragment:null===i&&(i=u),t===this.scheme&&r===this.authority&&s===this.path&&n===this.query&&i===this.fragment?this:new m(t,r,s,n,i)}static parse(e,t=!1){const r=f.exec(e);return r?new m(r[2]||u,S(r[4]||u),S(r[5]||u),S(r[7]||u),S(r[9]||u),t):new m(u,u,u,u,u)}static file(e){let t=u;if(n.ED&&(e=e.replace(/\\/g,d)),e[0]===d&&e[1]===d){const r=e.indexOf(d,2);-1===r?(t=e.substring(2),e=d):(t=e.substring(2,r),e=e.substring(r)||d)}return new m("file",t,e,u,u)}static from(e,t){const r=new m(e.scheme,e.authority,e.path,e.query,e.fragment,t);return r}static joinPath(e,...t){if(!e.path)throw new Error("[UriError]: cannot call joinPath on URI without path");let r;return r=n.ED&&"file"===e.scheme?g.file(s.Ku.join(C(e,!0),...t)).path:s.KR.join(e.path,...t),e.with({path:r})}toString(e=!1){return w(this,e)}toJSON(){return this}static revive(e){var t,r;if(e){if(e instanceof g)return e;{const s=new m(e);return s._formatted=null!==(t=e.external)&&void 0!==t?t:null,s._fsPath=e._sep===p&&null!==(r=e.fsPath)&&void 0!==r?r:null,s}}return e}}const p=n.ED?1:void 0;class m extends g{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||(this._fsPath=C(this,!1)),this._fsPath}toString(e=!1){return e?w(this,!0):(this._formatted||(this._formatted=w(this,!1)),this._formatted)}toJSON(){const e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=p),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}}const v={[58]:"%3A",[47]:"%2F",[63]:"%3F",[35]:"%23",[91]:"%5B",[93]:"%5D",[64]:"%40",[33]:"%21",[36]:"%24",[38]:"%26",[39]:"%27",[40]:"%28",[41]:"%29",[42]:"%2A",[43]:"%2B",[44]:"%2C",[59]:"%3B",[61]:"%3D",[32]:"%20"};function _(e,t,r){let s,n=-1;for(let i=0;i=97&&o<=122||o>=65&&o<=90||o>=48&&o<=57||45===o||46===o||95===o||126===o||t&&47===o||r&&91===o||r&&93===o||r&&58===o)-1!==n&&(s+=encodeURIComponent(e.substring(n,i)),n=-1),void 0!==s&&(s+=e.charAt(i));else{void 0===s&&(s=e.substr(0,i));const t=v[o];void 0!==t?(-1!==n&&(s+=encodeURIComponent(e.substring(n,i)),n=-1),s+=t):-1===n&&(n=i)}}return-1!==n&&(s+=encodeURIComponent(e.substring(n))),void 0!==s?s:e}function b(e){let t;for(let r=0;r1&&"file"===e.scheme?`//${e.authority}${e.path}`:47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&58===e.path.charCodeAt(2)?t?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,n.ED&&(r=r.replace(/\//g,"\\")),r}function w(e,t){const r=t?b:_;let s="",{scheme:n,authority:i,path:o,query:h,fragment:a}=e;if(n&&(s+=n,s+=":"),(i||"file"===n)&&(s+=d,s+=d),i){let e=i.indexOf("@");if(-1!==e){const t=i.substr(0,e);i=i.substr(e+1),e=t.lastIndexOf(":"),-1===e?s+=r(t,!1,!1):(s+=r(t.substr(0,e),!1,!1),s+=":",s+=r(t.substr(e+1),!1,!0)),s+="@"}i=i.toLowerCase(),e=i.lastIndexOf(":"),-1===e?s+=r(i,!1,!0):(s+=r(i.substr(0,e),!1,!0),s+=i.substr(e))}if(o){if(o.length>=3&&47===o.charCodeAt(0)&&58===o.charCodeAt(2)){const e=o.charCodeAt(1);e>=65&&e<=90&&(o=`/${String.fromCharCode(e+32)}:${o.substr(3)}`)}else if(o.length>=2&&58===o.charCodeAt(1)){const e=o.charCodeAt(0);e>=65&&e<=90&&(o=`${String.fromCharCode(e+32)}:${o.substr(2)}`)}s+=r(o,!0,!1)}return h&&(s+="?",s+=r(h,!1,!1)),a&&(s+="#",s+=t?a:_(a,!1,!1)),s}function y(e){try{return decodeURIComponent(e)}catch(t){return e.length>3?e.substr(0,3)+y(e.substr(3)):e}}const A=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function S(e){return e.match(A)?e.replace(A,(e=>y(e))):e}},7091:(e,t,r)=>{r.d(t,{R:()=>s});const s=function(){if("object"===typeof crypto&&"function"===typeof crypto.randomUUID)return crypto.randomUUID.bind(crypto);let e;e="object"===typeof crypto&&"function"===typeof crypto.getRandomValues?crypto.getRandomValues.bind(crypto):function(e){for(let t=0;t{r.d(t,{HZ:()=>u,PB:()=>_});var s=r(98642),n=r(11271),i=r(70959),o=r(2179),h=r(47606),a=r(61720);const l="$initialize";let c=!1;function u(e){h.$L&&(c||(c=!0,console.warn("Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/microsoft/monaco-editor#faq")),console.warn(e.message))}class d{constructor(e,t,r,s){this.vsWorker=e,this.req=t,this.method=r,this.args=s,this.type=0}}class f{constructor(e,t,r,s){this.vsWorker=e,this.seq=t,this.res=r,this.err=s,this.type=1}}class g{constructor(e,t,r,s){this.vsWorker=e,this.req=t,this.eventName=r,this.arg=s,this.type=2}}class p{constructor(e,t,r){this.vsWorker=e,this.req=t,this.event=r,this.type=3}}class m{constructor(e,t){this.vsWorker=e,this.req=t,this.type=4}}class v{constructor(e){this._workerId=-1,this._handler=e,this._lastSentReq=0,this._pendingReplies=Object.create(null),this._pendingEmitters=new Map,this._pendingEvents=new Map}setWorkerId(e){this._workerId=e}sendMessage(e,t){const r=String(++this._lastSentReq);return new Promise(((s,n)=>{this._pendingReplies[r]={resolve:s,reject:n},this._send(new d(this._workerId,r,e,t))}))}listen(e,t){let r=null;const s=new n.Q5({onWillAddFirstListener:()=>{r=String(++this._lastSentReq),this._pendingEmitters.set(r,s),this._send(new g(this._workerId,r,e,t))},onDidRemoveLastListener:()=>{this._pendingEmitters.delete(r),this._send(new m(this._workerId,r)),r=null}});return s.event}handleMessage(e){e&&e.vsWorker&&(-1!==this._workerId&&e.vsWorker!==this._workerId||this._handleMessage(e))}_handleMessage(e){switch(e.type){case 1:return this._handleReplyMessage(e);case 0:return this._handleRequestMessage(e);case 2:return this._handleSubscribeEventMessage(e);case 3:return this._handleEventMessage(e);case 4:return this._handleUnsubscribeEventMessage(e)}}_handleReplyMessage(e){if(!this._pendingReplies[e.seq])return void console.warn("Got reply to unknown seq");const t=this._pendingReplies[e.seq];if(delete this._pendingReplies[e.seq],e.err){let r=e.err;return e.err.$isError&&(r=new Error,r.name=e.err.name,r.message=e.err.message,r.stack=e.err.stack),void t.reject(r)}t.resolve(e.res)}_handleRequestMessage(e){const t=e.req,r=this._handler.handleMessage(e.method,e.args);r.then((e=>{this._send(new f(this._workerId,t,e,void 0))}),(e=>{e.detail instanceof Error&&(e.detail=(0,s.ri)(e.detail)),this._send(new f(this._workerId,t,void 0,(0,s.ri)(e)))}))}_handleSubscribeEventMessage(e){const t=e.req,r=this._handler.handleEvent(e.eventName,e.arg)((e=>{this._send(new p(this._workerId,t,e))}));this._pendingEvents.set(t,r)}_handleEventMessage(e){this._pendingEmitters.has(e.req)?this._pendingEmitters.get(e.req).fire(e.event):console.warn("Got event for unknown req")}_handleUnsubscribeEventMessage(e){this._pendingEvents.has(e.req)?(this._pendingEvents.get(e.req).dispose(),this._pendingEvents.delete(e.req)):console.warn("Got unsubscribe for unknown req")}_send(e){const t=[];if(0===e.type)for(let r=0;r{this._protocol.handleMessage(e)}),(e=>{null===s||void 0===s||s(e)}))),this._protocol=new v({sendMessage:(e,t)=>{this._worker.postMessage(e,t)},handleMessage:(e,t)=>{if("function"!==typeof r[e])return Promise.reject(new Error("Missing method "+e+" on main thread host."));try{return Promise.resolve(r[e].apply(r,t))}catch(s){return Promise.reject(s)}},handleEvent:(e,t)=>{if(C(e)){const s=r[e].call(r,t);if("function"!==typeof s)throw new Error(`Missing dynamic event ${e} on main thread host.`);return s}if(b(e)){const t=r[e];if("function"!==typeof t)throw new Error(`Missing event ${e} on main thread host.`);return t}throw new Error(`Malformed event name ${e}`)}}),this._protocol.setWorkerId(this._worker.getId());let n=null;const i=globalThis.require;"undefined"!==typeof i&&"function"===typeof i.getConfig?n=i.getConfig():"undefined"!==typeof globalThis.requirejs&&(n=globalThis.requirejs.s.contexts._.config);const h=(0,o.$E)(r);this._onModuleLoaded=this._protocol.sendMessage(l,[this._worker.getId(),JSON.parse(JSON.stringify(n)),t,h]);const a=(e,t)=>this._request(e,t),c=(e,t)=>this._protocol.listen(e,t);this._lazyProxy=new Promise(((e,r)=>{s=r,this._onModuleLoaded.then((t=>{e(w(t,a,c))}),(e=>{r(e),this._onError("Worker failed to load "+t,e)}))}))}getProxyObject(){return this._lazyProxy}_request(e,t){return new Promise(((r,s)=>{this._onModuleLoaded.then((()=>{this._protocol.sendMessage(e,t).then(r,s)}),s)}))}_onError(e,t){console.error(e),console.info(t)}}function b(e){return"o"===e[0]&&"n"===e[1]&&a.df(e.charCodeAt(2))}function C(e){return/^onDynamic/.test(e)&&a.df(e.charCodeAt(9))}function w(e,t,r){const s=e=>function(){const r=Array.prototype.slice.call(arguments,0);return t(e,r)},n=e=>function(t){return r(e,t)},i={};for(const o of e)C(o)?i[o]=n(o):b(o)?i[o]=r(o,void 0):i[o]=s(o);return i}},28851:(e,t,r)=>{r.d(t,{KV:()=>s,Ke:()=>u,Wm:()=>d});var s,n,i=r(85398),o=r(11271),h=r(70959),a=r(79247),l=r(55455),c=function(e,t,r,s){function n(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,i){function o(e){try{a(s.next(e))}catch(t){i(t)}}function h(e){try{a(s["throw"](e))}catch(t){i(t)}}function a(e){e.done?r(e.value):n(e.value).then(o,h)}a((s=s.apply(e,t||[])).next())}))};(function(e){e[e["STORAGE_DOES_NOT_EXIST"]=0]="STORAGE_DOES_NOT_EXIST",e[e["STORAGE_IN_MEMORY"]=1]="STORAGE_IN_MEMORY"})(s||(s={})),function(e){e[e["None"]=0]="None",e[e["Initialized"]=1]="Initialized",e[e["Closed"]=2]="Closed"}(n||(n={}));class u extends h.JT{constructor(e,t=Object.create(null)){super(),this.database=e,this.options=t,this._onDidChangeStorage=this._register(new o.K3),this.onDidChangeStorage=this._onDidChangeStorage.event,this.state=n.None,this.cache=new Map,this.flushDelayer=new i.rH(u.DEFAULT_FLUSH_DELAY),this.pendingDeletes=new Set,this.pendingInserts=new Map,this.whenFlushedCallbacks=[],this.registerListeners()}registerListeners(){this._register(this.database.onDidChangeItemsExternal((e=>this.onDidChangeItemsExternal(e))))}onDidChangeItemsExternal(e){var t,r;this._onDidChangeStorage.pause();try{null===(t=e.changed)||void 0===t||t.forEach(((e,t)=>this.acceptExternal(t,e))),null===(r=e.deleted)||void 0===r||r.forEach((e=>this.acceptExternal(e,void 0)))}finally{this._onDidChangeStorage.resume()}}acceptExternal(e,t){if(this.state===n.Closed)return;let r=!1;if((0,l.Jp)(t))r=this.cache.delete(e);else{const s=this.cache.get(e);s!==t&&(this.cache.set(e,t),r=!0)}r&&this._onDidChangeStorage.fire({key:e,external:!0})}get(e,t){const r=this.cache.get(e);return(0,l.Jp)(r)?t:r}getBoolean(e,t){const r=this.get(e);return(0,l.Jp)(r)?t:"true"===r}getNumber(e,t){const r=this.get(e);return(0,l.Jp)(r)?t:parseInt(r,10)}set(e,t,r=!1){return c(this,void 0,void 0,(function*(){if(this.state===n.Closed)return;if((0,l.Jp)(t))return this.delete(e,r);const s=(0,l.Kn)(t)||Array.isArray(t)?(0,a.Pz)(t):String(t),i=this.cache.get(e);return i!==s?(this.cache.set(e,s),this.pendingInserts.set(e,s),this.pendingDeletes.delete(e),this._onDidChangeStorage.fire({key:e,external:r}),this.doFlush()):void 0}))}delete(e,t=!1){return c(this,void 0,void 0,(function*(){if(this.state===n.Closed)return;const r=this.cache.delete(e);return r?(this.pendingDeletes.has(e)||this.pendingDeletes.add(e),this.pendingInserts.delete(e),this._onDidChangeStorage.fire({key:e,external:t}),this.doFlush()):void 0}))}get hasPending(){return this.pendingInserts.size>0||this.pendingDeletes.size>0}flushPending(){return c(this,void 0,void 0,(function*(){if(!this.hasPending)return;const e={insert:this.pendingInserts,delete:this.pendingDeletes};return this.pendingDeletes=new Set,this.pendingInserts=new Map,this.database.updateItems(e).finally((()=>{var e;if(!this.hasPending)while(this.whenFlushedCallbacks.length)null===(e=this.whenFlushedCallbacks.pop())||void 0===e||e()}))}))}doFlush(e){return c(this,void 0,void 0,(function*(){return this.flushDelayer.trigger((()=>this.flushPending()),e)}))}dispose(){this.flushDelayer.dispose(),super.dispose()}}u.DEFAULT_FLUSH_DELAY=100;class d{constructor(){this.onDidChangeItemsExternal=o.ju.None,this.items=new Map}updateItems(e){var t,r;return c(this,void 0,void 0,(function*(){null===(t=e.insert)||void 0===t||t.forEach(((e,t)=>this.items.set(t,e))),null===(r=e.delete)||void 0===r||r.forEach((e=>this.items.delete(e)))}))}}},83802:(e,t,r)=>{var s=r(73512),n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,h=Object.prototype.hasOwnProperty,a=(e,t,r,s)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let a of o(t))h.call(e,a)||a===r||n(e,a,{get:()=>t[a],enumerable:!(s=i(t,a))||s.enumerable});return e},l=(e,t,r)=>(a(e,t,"default"),r&&a(r,t,"default")),c={};l(c,s);var u={},d={},f=class{static getOrCreate(e){return d[e]||(d[e]=new f(e)),d[e]}_languageId;_loadingTriggered;_lazyLoadPromise;_lazyLoadPromiseResolve;_lazyLoadPromiseReject;constructor(e){this._languageId=e,this._loadingTriggered=!1,this._lazyLoadPromise=new Promise(((e,t)=>{this._lazyLoadPromiseResolve=e,this._lazyLoadPromiseReject=t}))}load(){return this._loadingTriggered||(this._loadingTriggered=!0,u[this._languageId].loader().then((e=>this._lazyLoadPromiseResolve(e)),(e=>this._lazyLoadPromiseReject(e)))),this._lazyLoadPromise}};function g(e){const t=e.id;u[t]=e,c.languages.register(e);const r=f.getOrCreate(t);c.languages.registerTokensProviderFactory(t,{create:async()=>{const e=await r.load();return e.language}}),c.languages.onLanguageEncountered(t,(async()=>{const e=await r.load();c.languages.setLanguageConfiguration(t,e.conf)}))} +/*!----------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.41.0(38e1e3d097f84e336c311d071a9ffb5191d4ffd1) + * Released under the MIT license + * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt + *-----------------------------------------------------------------------------*/ +g({id:"yaml",extensions:[".yaml",".yml"],aliases:["YAML","yaml","YML","yml"],mimetypes:["application/x-yaml","text/x-yaml"],loader:()=>r.e(411).then(r.bind(r,7411))})}}]); \ No newline at end of file diff --git a/dist/js/238.71293531.js b/dist/js/238.71293531.js new file mode 100644 index 00000000..b468b584 --- /dev/null +++ b/dist/js/238.71293531.js @@ -0,0 +1 @@ +"use strict";(globalThis["webpackChunkfrontend"]=globalThis["webpackChunkfrontend"]||[]).push([[238],{60309:(e,t,n)=>{n.d(t,{Qy:()=>a,f0:()=>r,hZ:()=>s,iy:()=>o,y0:()=>l});var i=n(66676);class s{constructor(e,t,n){this.changes=e,this.moves=t,this.hitTimeout=n}}class r{static inverse(e,t,n){const s=[];let o=1,a=1;for(const h of e){const e=new r(new i.z(o,h.originalRange.startLineNumber),new i.z(a,h.modifiedRange.startLineNumber),void 0);e.modifiedRange.isEmpty||s.push(e),o=h.originalRange.endLineNumberExclusive,a=h.modifiedRange.endLineNumberExclusive}const l=new r(new i.z(o,t+1),new i.z(a,n+1),void 0);return l.modifiedRange.isEmpty||s.push(l),s}constructor(e,t,n){this.originalRange=e,this.modifiedRange=t,this.innerChanges=n}toString(){return`{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`}get changedLineCount(){return Math.max(this.originalRange.length,this.modifiedRange.length)}flip(){var e;return new r(this.modifiedRange,this.originalRange,null===(e=this.innerChanges)||void 0===e?void 0:e.map((e=>e.flip())))}}class o{constructor(e,t){this.originalRange=e,this.modifiedRange=t}toString(){return`{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`}flip(){return new o(this.modifiedRange,this.originalRange)}}class a{constructor(e,t){this.original=e,this.modified=t}toString(){return`{${this.original.toString()}->${this.modified.toString()}}`}flip(){return new a(this.modified,this.original)}}class l{constructor(e,t){this.lineRangeMapping=e,this.changes=t}flip(){return new l(this.lineRangeMapping.flip(),this.changes.map((e=>e.flip())))}}},1286:(e,t,n)=>{n.d(t,{V:()=>I});var i=n(88994),s=n(60309),r=n(61720),o=n(33162),a=n(65662),l=n(66676);const h=3;class u{computeDiff(e,t,n){var i;const r=new C(e,t,{maxComputationTime:n.maxComputationTimeMs,shouldIgnoreTrimWhitespace:n.ignoreTrimWhitespace,shouldComputeCharChanges:!0,shouldMakePrettyDiff:!0,shouldPostProcessCharChanges:!0}),h=r.computeDiff(),u=[];let c=null;for(const a of h.changes){let e,t;e=0===a.originalEndLineNumber?new l.z(a.originalStartLineNumber+1,a.originalStartLineNumber+1):new l.z(a.originalStartLineNumber,a.originalEndLineNumber+1),t=0===a.modifiedEndLineNumber?new l.z(a.modifiedStartLineNumber+1,a.modifiedStartLineNumber+1):new l.z(a.modifiedStartLineNumber,a.modifiedEndLineNumber+1);let n=new s.f0(e,t,null===(i=a.charChanges)||void 0===i?void 0:i.map((e=>new s.iy(new o.e(e.originalStartLineNumber,e.originalStartColumn,e.originalEndLineNumber,e.originalEndColumn),new o.e(e.modifiedStartLineNumber,e.modifiedStartColumn,e.modifiedEndLineNumber,e.modifiedEndColumn)))));c&&(c.modifiedRange.endLineNumberExclusive!==n.modifiedRange.startLineNumber&&c.originalRange.endLineNumberExclusive!==n.originalRange.startLineNumber||(n=new s.f0(c.originalRange.join(n.originalRange),c.modifiedRange.join(n.modifiedRange),c.innerChanges&&n.innerChanges?c.innerChanges.concat(n.innerChanges):void 0),u.pop())),u.push(n),c=n}return(0,a.eZ)((()=>(0,a.DM)(u,((e,t)=>t.originalRange.startLineNumber-e.originalRange.endLineNumberExclusive===t.modifiedRange.startLineNumber-e.modifiedRange.endLineNumberExclusive&&e.originalRange.endLineNumberExclusive(10===e?"\\n":String.fromCharCode(e))+`-(${this._lineNumbers[t]},${this._columns[t]})`)).join(", ")+"]"}_assertIndex(e,t){if(e<0||e>=t.length)throw new Error("Illegal index")}getElements(){return this._charCodes}getStartLineNumber(e){return e>0&&e===this._lineNumbers.length?this.getEndLineNumber(e-1):(this._assertIndex(e,this._lineNumbers),this._lineNumbers[e])}getEndLineNumber(e){return-1===e?this.getStartLineNumber(e+1):(this._assertIndex(e,this._lineNumbers),10===this._charCodes[e]?this._lineNumbers[e]+1:this._lineNumbers[e])}getStartColumn(e){return e>0&&e===this._columns.length?this.getEndColumn(e-1):(this._assertIndex(e,this._columns),this._columns[e])}getEndColumn(e){return-1===e?this.getStartColumn(e+1):(this._assertIndex(e,this._columns),10===this._charCodes[e]?1:this._columns[e]+1)}}class f{constructor(e,t,n,i,s,r,o,a){this.originalStartLineNumber=e,this.originalStartColumn=t,this.originalEndLineNumber=n,this.originalEndColumn=i,this.modifiedStartLineNumber=s,this.modifiedStartColumn=r,this.modifiedEndLineNumber=o,this.modifiedEndColumn=a}static createFromDiffChange(e,t,n){const i=t.getStartLineNumber(e.originalStart),s=t.getStartColumn(e.originalStart),r=t.getEndLineNumber(e.originalStart+e.originalLength-1),o=t.getEndColumn(e.originalStart+e.originalLength-1),a=n.getStartLineNumber(e.modifiedStart),l=n.getStartColumn(e.modifiedStart),h=n.getEndLineNumber(e.modifiedStart+e.modifiedLength-1),u=n.getEndColumn(e.modifiedStart+e.modifiedLength-1);return new f(i,s,r,o,a,l,h,u)}}function m(e){if(e.length<=1)return e;const t=[e[0]];let n=t[0];for(let i=1,s=e.length;i0&&t.originalLength<20&&t.modifiedLength>0&&t.modifiedLength<20&&s()){const r=n.createCharSequence(e,t.originalStart,t.originalStart+t.originalLength-1),a=i.createCharSequence(e,t.modifiedStart,t.modifiedStart+t.modifiedLength-1);if(r.getElements().length>0&&a.getElements().length>0){let e=c(r,a,s,!0).changes;o&&(e=m(e)),d=[];for(let t=0,n=e.length;t1&&o>1){const i=e.charCodeAt(n-2),s=t.charCodeAt(o-2);if(i!==s)break;n--,o--}(n>1||o>1)&&this._pushTrimWhitespaceCharChange(i,s+1,1,n,r+1,1,o)}{let n=b(e,1),o=b(t,1);const a=e.length+1,l=t.length+1;while(n!0;const t=Date.now();return()=>Date.now()-tnew u,getAdvanced:()=>new v.Uc}},54179:(e,t,n)=>{n.d(t,{Uc:()=>S,v:()=>y});var i=n(65662),s=n(66676),r=n(12412),o=n(89999),a=n(33162),l=n(98642);class h{static trivial(e,t){return new h([new u(new r.q(0,e.length),new r.q(0,t.length))],!1)}static trivialTimedOut(e,t){return new h([new u(new r.q(0,e.length),new r.q(0,t.length))],!0)}constructor(e,t){this.diffs=e,this.hitTimeout=t}}class u{constructor(e,t){this.seq1Range=e,this.seq2Range=t}reverse(){return new u(this.seq2Range,this.seq1Range)}toString(){return`${this.seq1Range} <-> ${this.seq2Range}`}join(e){return new u(this.seq1Range.join(e.seq1Range),this.seq2Range.join(e.seq2Range))}delta(e){return 0===e?this:new u(this.seq1Range.delta(e),this.seq2Range.delta(e))}}class c{isValid(){return!0}}c.instance=new c;class d{constructor(e){if(this.timeout=e,this.startTime=Date.now(),this.valid=!0,e<=0)throw new l.he("timeout must be positive")}isValid(){const e=Date.now()-this.startTime0&&l>0&&3===o.get(r-1,l-1)&&(d+=a.get(r-1,l-1)),d+=i?i(r,l):1):d=-1;const g=Math.max(u,c,d);if(g===d){const e=r>0&&l>0?a.get(r-1,l-1):0;a.set(r,l,e+1),o.set(r,l,3)}else g===u?(a.set(r,l,0),o.set(r,l,1)):g===c&&(a.set(r,l,0),o.set(r,l,2));s.set(r,l,g)}const l=[];let d=e.length,f=t.length;function m(e,t){e+1===d&&t+1===f||l.push(new u(new r.q(e+1,d),new r.q(t+1,f))),d=e,f=t}let p=e.length-1,C=t.length-1;while(p>=0&&C>=0)3===o.get(p,C)?(m(p,C),p--,C--):1===o.get(p,C)?p--:C--;return m(-1,-1),l.reverse(),new h(l,!1)}}function m(e,t,n){let i=n;return i=k(e,t,i),i=b(e,t,i),i}function p(e,t,n){const i=[];for(const s of n){const e=i[i.length-1];e?s.seq1Range.start-e.seq1Range.endExclusive<=2||s.seq2Range.start-e.seq2Range.endExclusive<=2?i[i.length-1]=new u(e.seq1Range.join(s.seq1Range),e.seq2Range.join(s.seq2Range)):i.push(s):i.push(s)}return i}function C(e,t,n){let i=n;if(0===i.length)return i;let s,o=0;do{s=!1;const a=[i[0]];for(let l=1;l5||s.length>500)return!1;const a=e.getText(s).trim();if(a.length>20||a.split(/\r\n|\r|\n/).length>1)return!1;const l=e.countLinesIn(n.seq1Range),c=n.seq1Range.length,d=t.countLinesIn(n.seq2Range),g=n.seq2Range.length,f=e.countLinesIn(i.seq1Range),m=i.seq1Range.length,p=t.countLinesIn(i.seq2Range),C=i.seq2Range.length,k=130;function b(e){return Math.min(e,k)}return Math.pow(Math.pow(b(40*l+c),1.5)+Math.pow(b(40*d+g),1.5),1.5)+Math.pow(Math.pow(b(40*f+m),1.5)+Math.pow(b(40*p+C),1.5),1.5)>1.3*Math.pow(Math.pow(k,1.5),1.5)}const d=c(u,h);d?(s=!0,a[a.length-1]=a[a.length-1].join(h)):a.push(h)}i=a}while(o++<10&&s);return i}function k(e,t,n){if(0===n.length)return n;const i=[];i.push(n[0]);for(let o=1;o0&&(a=a.delta(l))}s.push(a)}return i.length>0&&s.push(i[i.length-1]),s}function b(e,t,n){if(!e.getBoundaryScore||!t.getBoundaryScore)return n;for(let i=0;i0?n[i-1]:void 0,o=n[i],a=i+1=i.start&&e.seq2Range.start-o>=s.start&&n.getElement(e.seq2Range.start-o)===n.getElement(e.seq2Range.endExclusive-o)&&oh&&(h=o,l=u)}return e.delta(l)}class v{compute(e,t,n=c.instance){if(0===e.length||0===t.length)return h.trivial(e,t);function i(n,i){while(ne.length||c>t.length)continue;const d=i(h,c);o.set(l,d);const g=h===n?a.get(l+1):a.get(l-1);if(a.set(l,d!==h?new I(g,h,c,d-h):g),o.get(l)===e.length&&o.get(l)-l===t.length)break e}}let d=a.get(l);const g=[];let f=e.length,m=t.length;while(1){const e=d?d.x+d.length:0,t=d?d.y+d.length:0;if(e===f&&t===m||g.push(new u(new r.q(e,f),new r.q(t,m))),!d)break;f=d.x,m=d.y,d=d.prev}return g.reverse(),new h(g,!1)}}class I{constructor(e,t,n,i){this.prev=e,this.x=t,this.y=n,this.length=i}}class _{constructor(){this.positiveArr=new Int32Array(10),this.negativeArr=new Int32Array(10)}get(e){return e<0?(e=-e-1,this.negativeArr[e]):this.positiveArr[e]}set(e,t){if(e<0){if(e=-e-1,e>=this.negativeArr.length){const e=this.negativeArr;this.negativeArr=new Int32Array(2*e.length),this.negativeArr.set(e)}this.negativeArr[e]=t}else{if(e>=this.positiveArr.length){const e=this.positiveArr;this.positiveArr=new Int32Array(2*e.length),this.positiveArr.set(e)}this.positiveArr[e]=t}}}class x{constructor(){this.positiveArr=[],this.negativeArr=[]}get(e){return e<0?(e=-e-1,this.negativeArr[e]):this.positiveArr[e]}set(e,t){e<0?(e=-e-1,this.negativeArr[e]=t):this.positiveArr[e]=t}}var L=n(60309);class S{constructor(){this.dynamicProgrammingDiffing=new f,this.myersDiffingAlgorithm=new v}computeDiff(e,t,n){if(1===e.length&&0===e[0].length||1===t.length&&0===t[0].length)return{changes:[new L.f0(new s.z(1,e.length+1),new s.z(1,t.length+1),[new L.iy(new a.e(1,1,e.length,e[0].length+1),new a.e(1,1,t.length,t[0].length+1))])],hitTimeout:!1,moves:[]};const o=0===n.maxComputationTimeMs?c.instance:new d(n.maxComputationTimeMs),l=!n.ignoreTrimWhitespace,h=new Map;function g(e){let t=h.get(e);return void 0===t&&(t=h.size,h.set(e,t)),t}const f=e.map((e=>g(e.trim()))),p=t.map((e=>g(e.trim()))),C=new T(f,e),k=new T(p,t),b=(()=>C.length+k.length<1500?this.dynamicProgrammingDiffing.compute(C,k,o,((n,i)=>e[n]===t[i]?0===t[i].length?.1:1+Math.log(1+t[i].length):.99)):this.myersDiffingAlgorithm.compute(C,k))();let w=b.diffs,v=b.hitTimeout;w=m(C,k,w);const I=[],_=n=>{if(l)for(let i=0;is.seq1Range.start-x===s.seq2Range.start-S));const n=s.seq1Range.start-x;_(n),x=s.seq1Range.endExclusive,S=s.seq2Range.endExclusive;const r=this.refineDiff(e,t,s,o,l);r.hitTimeout&&(v=!0);for(const e of r.mappings)I.push(e)}_(e.length-x);const E=y(I,e,t),R=[];if(n.computeMoves){const n=E.filter((e=>e.modifiedRange.isEmpty&&e.originalRange.length>=3)).map((t=>new W(t.originalRange,e))),i=new Set(E.filter((e=>e.originalRange.isEmpty&&e.modifiedRange.length>=3)).map((e=>new W(e.modifiedRange,t))));for(const s of n){let n,a=-1;for(const e of i){const t=s.computeSimilarity(e);t>a&&(a=t,n=e)}if(a>.9&&n){const a=this.refineDiff(e,t,new u(new r.q(s.range.startLineNumber-1,s.range.endLineNumberExclusive-1),new r.q(n.range.startLineNumber-1,n.range.endLineNumberExclusive-1)),o,l),h=y(a.mappings,e,t,!0);i.delete(n),R.push(new L.y0(new L.Qy(s.range,n.range),h))}}}return(0,i.eZ)((()=>{function n(e,t){if(e.lineNumber<1||e.lineNumber>t.length)return!1;const n=t[e.lineNumber-1];return!(e.column<1||e.column>n.length+1)}function i(e,t){return!(e.startLineNumber<1||e.startLineNumber>t.length+1)&&!(e.endLineNumberExclusive<1||e.endLineNumberExclusive>t.length+1)}for(const s of E){if(!s.innerChanges)return!1;for(const i of s.innerChanges){const s=n(i.modifiedRange.getStartPosition(),t)&&n(i.modifiedRange.getEndPosition(),t)&&n(i.originalRange.getStartPosition(),e)&&n(i.originalRange.getEndPosition(),e);if(!s)return!1}if(!i(s.modifiedRange,t)||!i(s.originalRange,e))return!1}return!0})),new L.hZ(E,R,v)}refineDiff(e,t,n,i,s){const r=new P(e,n.seq1Range,s),o=new P(t,n.seq2Range,s),a=r.length+o.length<500?this.dynamicProgrammingDiffing.compute(r,o,i):this.myersDiffingAlgorithm.compute(r,o,i);let l=a.diffs;l=m(r,o,l),l=E(r,o,l),l=p(r,o,l),l=C(r,o,l);const h=l.map((e=>new L.iy(r.translateRange(e.seq1Range),o.translateRange(e.seq2Range))));return{mappings:h,hitTimeout:a.hitTimeout}}}function E(e,t,n){const i=[];let s;function o(){if(!s)return;const e=s.s1Range.length-s.deleted;s.s2Range.length,s.added;Math.max(s.deleted,s.added)+(s.count-1)>e&&i.push(new u(s.s1Range,s.s2Range)),s=void 0}for(const l of n){function h(e,t){var n,i,a,h;if(!s||!s.s1Range.containsRange(e)||!s.s2Range.containsRange(t))if(!s||s.s1Range.endExclusive0||t.length>0){const i=e[0],s=t[0];let r;r=i&&(!s||i.seq1Range.start0&&n[n.length-1].seq1Range.endExclusive>=r.seq1Range.start?n[n.length-1]=n[n.length-1].join(r):n.push(r)}return n}function y(e,t,n,s=!1){const r=[];for(const i of O(e.map((e=>N(e,t,n))),((e,t)=>e.originalRange.overlapOrTouch(t.originalRange)||e.modifiedRange.overlapOrTouch(t.modifiedRange)))){const e=i[0],t=i[i.length-1];r.push(new L.f0(e.originalRange.join(t.originalRange),e.modifiedRange.join(t.modifiedRange),i.map((e=>e.innerChanges[0]))))}return(0,i.eZ)((()=>!(!s&&r.length>0&&r[0].originalRange.startLineNumber!==r[0].modifiedRange.startLineNumber)&&(0,i.DM)(r,((e,t)=>t.originalRange.startLineNumber-e.originalRange.endLineNumberExclusive===t.modifiedRange.startLineNumber-e.modifiedRange.endLineNumberExclusive&&e.originalRange.endLineNumberExclusive=n[e.modifiedRange.startLineNumber-1].length&&e.originalRange.startColumn-1>=t[e.originalRange.startLineNumber-1].length&&e.originalRange.startLineNumber<=e.originalRange.endLineNumber+r&&e.modifiedRange.startLineNumber<=e.modifiedRange.endLineNumber+r&&(i=1);const o=new s.z(e.originalRange.startLineNumber+i,e.originalRange.endLineNumber+1+r),a=new s.z(e.modifiedRange.startLineNumber+i,e.modifiedRange.endLineNumber+1+r);return new L.f0(o,a,[e])}function*O(e,t){let n,i;for(const s of e)void 0!==i&&t(i,s)?n.push(s):(n&&(yield n),n=[s]),i=s;n&&(yield n)}class T{constructor(e,t){this.trimmedHash=e,this.lines=t}getElement(e){return this.trimmedHash[e]}get length(){return this.trimmedHash.length}getBoundaryScore(e){const t=0===e?0:B(this.lines[e-1]),n=e===this.lines.length?0:B(this.lines[e]);return 1e3-(t+n)}}function B(e){let t=0;while(t0&&t.endExclusive>=e.length&&(t=new r.q(t.start-1,t.endExclusive),i=!0),this.lineRange=t;for(let s=this.lineRange.start;sString.fromCharCode(e))).join("")}getElement(e){return this.elements[e]}get length(){return this.elements.length}getBoundaryScore(e){const t=q(e>0?this.elements[e-1]:-1),n=q(ee?n=i:t=i+1}const i=0===t?0:this.firstCharOffsetByLineMinusOne[t-1];return new o.L(this.lineRange.start+t+1,e-i+1+this.offsetByLine[t])}translateRange(e){return a.e.fromPositions(this.translateOffset(e.start),this.translateOffset(e.endExclusive))}findWordContaining(e){if(e<0||e>=this.elements.length)return;if(!M(this.elements[e]))return;let t=e;while(t>0&&M(this.elements[t-1]))t--;let n=e;while(n=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57}const A={[0]:0,[1]:0,[2]:0,[3]:10,[4]:2,[5]:3,[6]:10,[7]:10};function D(e){return A[e]}function q(e){return 10===e?7:13===e?6:z(e)?5:e>=97&&e<=122?0:e>=65&&e<=90?1:e>=48&&e<=57?2:-1===e?3:4}function z(e){return 32===e||9===e}const F=new Map;function H(e){let t=F.get(e);return void 0===t&&(t=F.size,F.set(e,t)),t}class W{constructor(e,t){this.range=e,this.lines=t,this.histogram=[];let n=0;for(let i=e.startLineNumber-1;i{n.d(t,{p:()=>i});class i{constructor(e,t,n,i,s,r){this.id=e,this.label=t,this.alias=n,this._precondition=i,this._run=s,this._contextKeyService=r}isSupported(){return this._contextKeyService.contextMatchesRules(this._precondition)}run(e){return this.isSupported()?this._run(e):Promise.resolve(void 0)}}},22668:(e,t,n)=>{n.d(t,{g:()=>i});const i={ICodeEditor:"vs.editor.ICodeEditor",IDiffEditor:"vs.editor.IDiffEditor"}},44950:(e,t,n)=>{n.d(t,{u:()=>i});var i,s=n(25206),r=n(37174);(function(e){e.editorSimpleInput=new r.uy("editorSimpleInput",!1,!0),e.editorTextFocus=new r.uy("editorTextFocus",!1,s.NC("editorTextFocus","Whether the editor text has focus (cursor is blinking)")),e.focus=new r.uy("editorFocus",!1,s.NC("editorFocus","Whether the editor or an editor widget has focus (e.g. focus is in the find widget)")),e.textInputFocus=new r.uy("textInputFocus",!1,s.NC("textInputFocus","Whether an editor or a rich text input has focus (cursor is blinking)")),e.readOnly=new r.uy("editorReadonly",!1,s.NC("editorReadonly","Whether the editor is read-only")),e.inDiffEditor=new r.uy("inDiffEditor",!1,s.NC("inDiffEditor","Whether the context is a diff editor")),e.isEmbeddedDiffEditor=new r.uy("isEmbeddedDiffEditor",!1,s.NC("isEmbeddedDiffEditor","Whether the context is an embedded diff editor")),e.accessibleDiffViewerVisible=new r.uy("accessibleDiffViewerVisible",!1,s.NC("accessibleDiffViewerVisible","Whether the accessible diff viewer is visible")),e.columnSelection=new r.uy("editorColumnSelection",!1,s.NC("editorColumnSelection","Whether `editor.columnSelection` is enabled")),e.writable=e.readOnly.toNegated(),e.hasNonEmptySelection=new r.uy("editorHasSelection",!1,s.NC("editorHasSelection","Whether the editor has text selected")),e.hasOnlyEmptySelection=e.hasNonEmptySelection.toNegated(),e.hasMultipleSelections=new r.uy("editorHasMultipleSelections",!1,s.NC("editorHasMultipleSelections","Whether the editor has multiple selections")),e.hasSingleSelection=e.hasMultipleSelections.toNegated(),e.tabMovesFocus=new r.uy("editorTabMovesFocus",!1,s.NC("editorTabMovesFocus","Whether `Tab` will move focus out of the editor")),e.tabDoesNotMoveFocus=e.tabMovesFocus.toNegated(),e.isInWalkThroughSnippet=new r.uy("isInEmbeddedEditor",!1,!0),e.canUndo=new r.uy("canUndo",!1,!0),e.canRedo=new r.uy("canRedo",!1,!0),e.hoverVisible=new r.uy("editorHoverVisible",!1,s.NC("editorHoverVisible","Whether the editor hover is visible")),e.hoverFocused=new r.uy("editorHoverFocused",!1,s.NC("editorHoverFocused","Whether the editor hover is focused")),e.stickyScrollFocused=new r.uy("stickyScrollFocused",!1,s.NC("stickyScrollFocused","Whether the sticky scroll is focused")),e.stickyScrollVisible=new r.uy("stickyScrollVisible",!1,s.NC("stickyScrollVisible","Whether the sticky scroll is visible")),e.standaloneColorPickerVisible=new r.uy("standaloneColorPickerVisible",!1,s.NC("standaloneColorPickerVisible","Whether the standalone color picker is visible")),e.standaloneColorPickerFocused=new r.uy("standaloneColorPickerFocused",!1,s.NC("standaloneColorPickerFocused","Whether the standalone color picker is focused")),e.inCompositeEditor=new r.uy("inCompositeEditor",void 0,s.NC("inCompositeEditor","Whether the editor is part of a larger editor (e.g. notebooks)")),e.notInCompositeEditor=e.inCompositeEditor.toNegated(),e.languageId=new r.uy("editorLangId","",s.NC("editorLangId","The language identifier of the editor")),e.hasCompletionItemProvider=new r.uy("editorHasCompletionItemProvider",!1,s.NC("editorHasCompletionItemProvider","Whether the editor has a completion item provider")),e.hasCodeActionsProvider=new r.uy("editorHasCodeActionsProvider",!1,s.NC("editorHasCodeActionsProvider","Whether the editor has a code actions provider")),e.hasCodeLensProvider=new r.uy("editorHasCodeLensProvider",!1,s.NC("editorHasCodeLensProvider","Whether the editor has a code lens provider")),e.hasDefinitionProvider=new r.uy("editorHasDefinitionProvider",!1,s.NC("editorHasDefinitionProvider","Whether the editor has a definition provider")),e.hasDeclarationProvider=new r.uy("editorHasDeclarationProvider",!1,s.NC("editorHasDeclarationProvider","Whether the editor has a declaration provider")),e.hasImplementationProvider=new r.uy("editorHasImplementationProvider",!1,s.NC("editorHasImplementationProvider","Whether the editor has an implementation provider")),e.hasTypeDefinitionProvider=new r.uy("editorHasTypeDefinitionProvider",!1,s.NC("editorHasTypeDefinitionProvider","Whether the editor has a type definition provider")),e.hasHoverProvider=new r.uy("editorHasHoverProvider",!1,s.NC("editorHasHoverProvider","Whether the editor has a hover provider")),e.hasDocumentHighlightProvider=new r.uy("editorHasDocumentHighlightProvider",!1,s.NC("editorHasDocumentHighlightProvider","Whether the editor has a document highlight provider")),e.hasDocumentSymbolProvider=new r.uy("editorHasDocumentSymbolProvider",!1,s.NC("editorHasDocumentSymbolProvider","Whether the editor has a document symbol provider")),e.hasReferenceProvider=new r.uy("editorHasReferenceProvider",!1,s.NC("editorHasReferenceProvider","Whether the editor has a reference provider")),e.hasRenameProvider=new r.uy("editorHasRenameProvider",!1,s.NC("editorHasRenameProvider","Whether the editor has a rename provider")),e.hasSignatureHelpProvider=new r.uy("editorHasSignatureHelpProvider",!1,s.NC("editorHasSignatureHelpProvider","Whether the editor has a signature help provider")),e.hasInlayHintsProvider=new r.uy("editorHasInlayHintsProvider",!1,s.NC("editorHasInlayHintsProvider","Whether the editor has an inline hints provider")),e.hasDocumentFormattingProvider=new r.uy("editorHasDocumentFormattingProvider",!1,s.NC("editorHasDocumentFormattingProvider","Whether the editor has a document formatting provider")),e.hasDocumentSelectionFormattingProvider=new r.uy("editorHasDocumentSelectionFormattingProvider",!1,s.NC("editorHasDocumentSelectionFormattingProvider","Whether the editor has a document selection formatting provider")),e.hasMultipleDocumentFormattingProvider=new r.uy("editorHasMultipleDocumentFormattingProvider",!1,s.NC("editorHasMultipleDocumentFormattingProvider","Whether the editor has multiple document formatting providers")),e.hasMultipleDocumentSelectionFormattingProvider=new r.uy("editorHasMultipleDocumentSelectionFormattingProvider",!1,s.NC("editorHasMultipleDocumentSelectionFormattingProvider","Whether the editor has multiple document selection formatting providers"))})(i||(i={}))},64559:(e,t,n)=>{n.d(t,{n:()=>r,y:()=>s});const i=[];function s(e){i.push(e)}function r(){return i.slice(0)}},94982:(e,t,n)=>{n.d(t,{b:()=>i});class i{get type(){return this._theme.type}get value(){return this._theme}constructor(e){this._theme=e}update(e){this._theme=e}getColor(e){return this._theme.getColor(e)}}},15578:(e,t,n)=>{n.d(t,{N:()=>i});class i{static getLanguageId(e){return(255&e)>>>0}static getTokenType(e){return(768&e)>>>8}static containsBalancedBrackets(e){return 0!==(1024&e)}static getFontStyle(e){return(30720&e)>>>11}static getForeground(e){return(16744448&e)>>>15}static getBackground(e){return(4278190080&e)>>>24}static getClassNameFromMetadata(e){const t=this.getForeground(e);let n="mtk"+t;const i=this.getFontStyle(e);return 1&i&&(n+=" mtki"),2&i&&(n+=" mtkb"),4&i&&(n+=" mtku"),8&i&&(n+=" mtks"),n}static getInlineStyleFromMetadata(e,t){const n=this.getForeground(e),i=this.getFontStyle(e);let s=`color: ${t[n]};`;1&i&&(s+="font-style: italic;"),2&i&&(s+="font-weight: bold;");let r="";return 4&i&&(r+=" underline"),8&i&&(r+=" line-through"),r&&(s+=`text-decoration:${r};`),s}static getPresentationFromMetadata(e){const t=this.getForeground(e),n=this.getFontStyle(e);return{foreground:t,italic:Boolean(1&n),bold:Boolean(2&n),underline:Boolean(4&n),strikethrough:Boolean(8&n)}}}},13420:(e,t,n)=>{n.d(t,{c:()=>c});var i=n(11271),s=n(70959),r=n(79857),o=n(48079),a=n(92286);function l(e,t,n,i,s,r){if(Array.isArray(e)){let o=0;for(const a of e){const e=l(a,t,n,i,s,r);if(10===e)return e;e>o&&(o=e)}return o}if("string"===typeof e)return i?"*"===e?5:e===n?10:0:0;if(e){const{language:l,pattern:h,scheme:u,hasAccessToAllModels:c,notebookType:d}=e;if(!i&&!c)return 0;d&&s&&(t=s);let g=0;if(u)if(u===t.scheme)g=10;else{if("*"!==u)return 0;g=5}if(l)if(l===n)g=10;else{if("*"!==l)return 0;g=Math.max(g,5)}if(d)if(d===r)g=10;else{if("*"!==d||void 0===r)return 0;g=Math.max(g,5)}if(h){let e;if(e="string"===typeof h?h:Object.assign(Object.assign({},h),{base:(0,a.Fv)(h.base)}),e!==t.fsPath&&!(0,o.EQ)(e,t.fsPath))return 0;g=10}return g}return 0}function h(e){return"string"!==typeof e&&(Array.isArray(e)?e.every(h):!!e.exclusive)}class u{constructor(e,t,n,i){this.uri=e,this.languageId=t,this.notebookUri=n,this.notebookType=i}equals(e){var t,n;return this.notebookType===e.notebookType&&this.languageId===e.languageId&&this.uri.toString()===e.uri.toString()&&(null===(t=this.notebookUri)||void 0===t?void 0:t.toString())===(null===(n=e.notebookUri)||void 0===n?void 0:n.toString())}}class c{constructor(e){this._notebookInfoResolver=e,this._clock=0,this._entries=[],this._onDidChange=new i.Q5,this.onDidChange=this._onDidChange.event}register(e,t){let n={selector:e,provider:t,_score:-1,_time:this._clock++};return this._entries.push(n),this._lastCandidate=void 0,this._onDidChange.fire(this._entries.length),(0,s.OF)((()=>{if(n){const e=this._entries.indexOf(n);e>=0&&(this._entries.splice(e,1),this._lastCandidate=void 0,this._onDidChange.fire(this._entries.length),n=void 0)}}))}has(e){return this.all(e).length>0}all(e){if(!e)return[];this._updateScores(e);const t=[];for(const n of this._entries)n._score>0&&t.push(n.provider);return t}ordered(e){const t=[];return this._orderedForEach(e,(e=>t.push(e.provider))),t}orderedGroups(e){const t=[];let n,i;return this._orderedForEach(e,(e=>{n&&i===e._score?n.push(e.provider):(i=e._score,n=[e.provider],t.push(n))})),t}_orderedForEach(e,t){this._updateScores(e);for(const n of this._entries)n._score>0&&t(n)}_updateScores(e){var t,n;const i=null===(t=this._notebookInfoResolver)||void 0===t?void 0:t.call(this,e.uri),s=i?new u(e.uri,e.getLanguageId(),i.uri,i.type):new u(e.uri,e.getLanguageId(),void 0,void 0);if(!(null===(n=this._lastCandidate)||void 0===n?void 0:n.equals(s))){this._lastCandidate=s;for(const t of this._entries)if(t._score=l(t.selector,s.uri,s.languageId,(0,r.pt)(e),s.notebookUri,s.notebookType),h(t.selector)&&t._score>0){for(const e of this._entries)e._score=0;t._score=1e3;break}this._entries.sort(c._compareByScoreAndTime)}}static _compareByScoreAndTime(e,t){return e._scoret._score?-1:d(e.selector)&&!d(t.selector)?1:!d(e.selector)&&d(t.selector)?-1:e._timet._time?-1:0}}function d(e){return"string"!==typeof e&&(Array.isArray(e)?e.some(d):Boolean(e.isBuiltin))}},67026:(e,t,n)=>{n.d(t,{AD:()=>w,DI:()=>f,MO:()=>v,MY:()=>o,RW:()=>I,WU:()=>d,bw:()=>s,gX:()=>i,gl:()=>b,hG:()=>g,ln:()=>m,mY:()=>k,vx:()=>p});var i,s,r,o,a=n(8419),l=n(95896),h=n(33162),u=n(15523),c=n(25206);class d{constructor(e,t,n){this.offset=e,this.type=t,this.language=n,this._tokenBrand=void 0}toString(){return"("+this.offset+", "+this.type+")"}}class g{constructor(e,t){this.tokens=e,this.endState=t,this._tokenizationResultBrand=void 0}}class f{constructor(e,t){this.tokens=e,this.endState=t,this._encodedTokenizationResultBrand=void 0}}(function(e){const t=new Map;function n(e){let n=t.get(e);return n||(console.info("No codicon found for CompletionItemKind "+e),n=a.l.symbolProperty),n}t.set(0,a.l.symbolMethod),t.set(1,a.l.symbolFunction),t.set(2,a.l.symbolConstructor),t.set(3,a.l.symbolField),t.set(4,a.l.symbolVariable),t.set(5,a.l.symbolClass),t.set(6,a.l.symbolStruct),t.set(7,a.l.symbolInterface),t.set(8,a.l.symbolModule),t.set(9,a.l.symbolProperty),t.set(10,a.l.symbolEvent),t.set(11,a.l.symbolOperator),t.set(12,a.l.symbolUnit),t.set(13,a.l.symbolValue),t.set(15,a.l.symbolEnum),t.set(14,a.l.symbolConstant),t.set(15,a.l.symbolEnum),t.set(16,a.l.symbolEnumMember),t.set(17,a.l.symbolKeyword),t.set(27,a.l.symbolSnippet),t.set(18,a.l.symbolText),t.set(19,a.l.symbolColor),t.set(20,a.l.symbolFile),t.set(21,a.l.symbolReference),t.set(22,a.l.symbolCustomColor),t.set(23,a.l.symbolFolder),t.set(24,a.l.symbolTypeParameter),t.set(25,a.l.account),t.set(26,a.l.issues),e.toIcon=n;const i=new Map;function s(e,t){let n=i.get(e);return"undefined"!==typeof n||t||(n=9),n}i.set("method",0),i.set("function",1),i.set("constructor",2),i.set("field",3),i.set("variable",4),i.set("class",5),i.set("struct",6),i.set("interface",7),i.set("module",8),i.set("property",9),i.set("event",10),i.set("operator",11),i.set("unit",12),i.set("value",13),i.set("constant",14),i.set("enum",15),i.set("enum-member",16),i.set("enumMember",16),i.set("keyword",17),i.set("snippet",27),i.set("text",18),i.set("color",19),i.set("file",20),i.set("reference",21),i.set("customcolor",22),i.set("folder",23),i.set("type-parameter",24),i.set("typeParameter",24),i.set("account",25),i.set("issue",26),e.fromString=s})(i||(i={})),function(e){e[e["Automatic"]=0]="Automatic",e[e["Explicit"]=1]="Explicit"}(s||(s={}));class m{constructor(e,t,n,i){this.range=e,this.text=t,this.completionKind=n,this.isSnippetText=i}equals(e){return h.e.lift(this.range).equalsRange(e.range)&&this.text===e.text&&this.completionKind===e.completionKind&&this.isSnippetText===e.isSnippetText}}function p(e){return e&&l.o.isUri(e.uri)&&h.e.isIRange(e.range)&&(h.e.isIRange(e.originSelectionRange)||h.e.isIRange(e.targetSelectionRange))}(function(e){e[e["Invoke"]=1]="Invoke",e[e["TriggerCharacter"]=2]="TriggerCharacter",e[e["ContentChange"]=3]="ContentChange"})(r||(r={})),function(e){e[e["Text"]=0]="Text",e[e["Read"]=1]="Read",e[e["Write"]=2]="Write"}(o||(o={}));(0,c.NC)("Array","array"),(0,c.NC)("Boolean","boolean"),(0,c.NC)("Class","class"),(0,c.NC)("Constant","constant"),(0,c.NC)("Constructor","constructor"),(0,c.NC)("Enum","enumeration"),(0,c.NC)("EnumMember","enumeration member"),(0,c.NC)("Event","event"),(0,c.NC)("Field","field"),(0,c.NC)("File","file"),(0,c.NC)("Function","function"),(0,c.NC)("Interface","interface"),(0,c.NC)("Key","key"),(0,c.NC)("Method","method"),(0,c.NC)("Module","module"),(0,c.NC)("Namespace","namespace"),(0,c.NC)("Null","null"),(0,c.NC)("Number","number"),(0,c.NC)("Object","object"),(0,c.NC)("Operator","operator"),(0,c.NC)("Package","package"),(0,c.NC)("Property","property"),(0,c.NC)("String","string"),(0,c.NC)("Struct","struct"),(0,c.NC)("TypeParameter","type parameter"),(0,c.NC)("Variable","variable");var C,k,b;(function(e){const t=new Map;function n(e){let n=t.get(e);return n||(console.info("No codicon found for SymbolKind "+e),n=a.l.symbolProperty),n}t.set(0,a.l.symbolFile),t.set(1,a.l.symbolModule),t.set(2,a.l.symbolNamespace),t.set(3,a.l.symbolPackage),t.set(4,a.l.symbolClass),t.set(5,a.l.symbolMethod),t.set(6,a.l.symbolProperty),t.set(7,a.l.symbolField),t.set(8,a.l.symbolConstructor),t.set(9,a.l.symbolEnum),t.set(10,a.l.symbolInterface),t.set(11,a.l.symbolFunction),t.set(12,a.l.symbolVariable),t.set(13,a.l.symbolConstant),t.set(14,a.l.symbolString),t.set(15,a.l.symbolNumber),t.set(16,a.l.symbolBoolean),t.set(17,a.l.symbolArray),t.set(18,a.l.symbolObject),t.set(19,a.l.symbolKey),t.set(20,a.l.symbolNull),t.set(21,a.l.symbolEnumMember),t.set(22,a.l.symbolStruct),t.set(23,a.l.symbolEvent),t.set(24,a.l.symbolOperator),t.set(25,a.l.symbolTypeParameter),e.toIcon=n})(C||(C={}));class w{static fromValue(e){switch(e){case"comment":return w.Comment;case"imports":return w.Imports;case"region":return w.Region}return new w(e)}constructor(e){this.value=e}}w.Comment=new w("comment"),w.Imports=new w("imports"),w.Region=new w("region"),function(e){function t(e){return!(!e||"object"!==typeof e)&&("string"===typeof e.id&&"string"===typeof e.title)}e.is=t}(k||(k={})),function(e){e[e["Type"]=1]="Type",e[e["Parameter"]=2]="Parameter"}(b||(b={}));class v{constructor(e){this.createSupport=e,this._tokenizationSupport=null}dispose(){this._tokenizationSupport&&this._tokenizationSupport.then((e=>{e&&e.dispose()}))}get tokenizationSupport(){return this._tokenizationSupport||(this._tokenizationSupport=this.createSupport()),this._tokenizationSupport}}const I=new u.R},52185:(e,t,n)=>{n.d(t,{$9:()=>c,UF:()=>u,n8:()=>h,r7:()=>l,tI:()=>d});var i=n(61720),s=n(11432),r=n(64371),o=n(97297);function a(e,t,n){const i=e.tokenization.getLanguageIdAtPosition(t,0);if(t>1){let s,r=-1;for(s=t-1;s>=1;s--){if(e.tokenization.getLanguageIdAtPosition(s,0)!==i)return r;const t=e.getLineContent(s);if(!n.shouldIgnore(t)&&!/^\s+$/.test(t)&&""!==t)return s;r=s}}return-1}function l(e,t,n,r=!0,o){if(e<4)return null;const l=o.getLanguageConfiguration(t.tokenization.getLanguageId()).indentRulesSupport;if(!l)return null;if(n<=1)return{indentation:"",action:null};for(let i=n-1;i>0;i--){if(""!==t.getLineContent(i))break;if(1===i)return{indentation:"",action:null}}const h=a(t,n,l);if(h<0)return null;if(h<1)return{indentation:"",action:null};const u=t.getLineContent(h);if(l.shouldIncrease(u)||l.shouldIndentNextLine(u))return{indentation:i.V8(u),action:s.wU.Indent,line:h};if(l.shouldDecrease(u))return{indentation:i.V8(u),action:null,line:h};{if(1===h)return{indentation:i.V8(t.getLineContent(h)),action:null,line:h};const e=h-1,n=l.getIndentMetadata(t.getLineContent(e));if(!(3&n)&&4&n){let n=0;for(let i=e-1;i>0;i--)if(!l.shouldIndentNextLine(t.getLineContent(i))){n=i;break}return{indentation:i.V8(t.getLineContent(n+1)),action:null,line:n+1}}if(r)return{indentation:i.V8(t.getLineContent(h)),action:null,line:h};for(let r=h;r>0;r--){const e=t.getLineContent(r);if(l.shouldIncrease(e))return{indentation:i.V8(e),action:s.wU.Indent,line:r};if(l.shouldIndentNextLine(e)){let e=0;for(let n=r-1;n>0;n--)if(!l.shouldIndentNextLine(t.getLineContent(r))){e=n;break}return{indentation:i.V8(t.getLineContent(e+1)),action:null,line:e+1}}if(l.shouldDecrease(e))return{indentation:i.V8(e),action:null,line:r}}return{indentation:i.V8(t.getLineContent(1)),action:null,line:1}}}function h(e,t,n,r,o,a){if(e<4)return null;const h=a.getLanguageConfiguration(n);if(!h)return null;const u=a.getLanguageConfiguration(n).indentRulesSupport;if(!u)return null;const c=l(e,t,r,void 0,a),d=t.getLineContent(r);if(c){const n=c.line;if(void 0!==n){let a=!0;for(let e=n;e0&&u.getLanguageId(0)!==c.languageId?(m=!0,g=d.substr(0,n.startColumn-1-c.firstCharOffset)):g=u.getLineContent().substring(0,n.startColumn-1),n.isEmpty())f=d.substr(n.startColumn-1-c.firstCharOffset);else{const e=(0,o.n2)(t,n.endLineNumber,n.endColumn);f=e.getLineContent().substr(n.endColumn-1-c.firstCharOffset)}const p=h.getLanguageConfiguration(c.languageId).indentRulesSupport;if(!p)return null;const C=g,k=i.V8(g),b={tokenization:{getLineTokens:e=>t.tokenization.getLineTokens(e),getLanguageId:()=>t.getLanguageId(),getLanguageIdAtPosition:(e,n)=>t.getLanguageIdAtPosition(e,n)},getLineContent:e=>e===n.startLineNumber?C:t.getLineContent(e)},w=i.V8(u.getLineContent()),v=l(e,b,n.startLineNumber+1,void 0,h);if(!v){const e=m?w:k;return{beforeEnter:e,afterEnter:e}}let I=m?w:v.indentation;return v.action===s.wU.Indent&&(I=a.shiftIndent(I)),p.shouldDecrease(f)&&(I=a.unshiftIndent(I)),{beforeEnter:m?w:k,afterEnter:I}}function c(e,t,n,i,r,a){if(e<4)return null;const h=(0,o.n2)(t,n.startLineNumber,n.startColumn);if(h.firstCharOffset)return null;const u=a.getLanguageConfiguration(h.languageId).indentRulesSupport;if(!u)return null;const c=h.getLineContent(),d=c.substr(0,n.startColumn-1-h.firstCharOffset);let g;if(n.isEmpty())g=c.substr(n.startColumn-1-h.firstCharOffset);else{const e=(0,o.n2)(t,n.endLineNumber,n.endColumn);g=e.getLineContent().substr(n.endColumn-1-h.firstCharOffset)}if(!u.shouldDecrease(d+g)&&u.shouldDecrease(d+i+g)){const i=l(e,t,n.startLineNumber,!1,a);if(!i)return null;let o=i.indentation;return i.action!==s.wU.Indent&&(o=r.unshiftIndent(o)),o}return null}function d(e,t,n){const i=n.getLanguageConfiguration(e.getLanguageId()).indentRulesSupport;return i?t<1||t>e.getLineCount()?null:i.getIndentMetadata(e.getLineContent(t)):null}},90309:(e,t,n)=>{n.d(t,{e:()=>d});var i=n(60204);function s(e){const t=[];for(const n of e){const e=Number(n);(e||0===e&&""!==n.replace(/\s/g,""))&&t.push(e)}return t}function r(e,t,n,i){return{red:e/255,blue:n/255,green:t/255,alpha:i}}function o(e,t){const n=t.index,i=t[0].length;if(!n)return;const s=e.positionAt(n),r={startLineNumber:s.lineNumber,startColumn:s.column,endLineNumber:s.lineNumber,endColumn:s.column+i};return r}function a(e,t){if(!e)return;const n=i.Il.Format.CSS.parseHex(t);return n?{range:e,color:r(n.rgba.r,n.rgba.g,n.rgba.b,n.rgba.a)}:void 0}function l(e,t,n){if(!e||1!==t.length)return;const i=t[0],o=i.values(),a=s(o);return{range:e,color:r(a[0],a[1],a[2],n?a[3]:1)}}function h(e,t,n){if(!e||1!==t.length)return;const o=t[0],a=o.values(),l=s(a),h=new i.Il(new i.Oz(l[0],l[1]/100,l[2]/100,n?l[3]:1));return{range:e,color:r(h.rgba.r,h.rgba.g,h.rgba.b,h.rgba.a)}}function u(e,t){return"string"===typeof e?[...e.matchAll(t)]:e.findMatches(t)}function c(e){const t=[],n=/\b(rgb|rgba|hsl|hsla)(\([0-9\s,.\%]*\))|(#)([A-Fa-f0-9]{3})\b|(#)([A-Fa-f0-9]{4})\b|(#)([A-Fa-f0-9]{6})\b|(#)([A-Fa-f0-9]{8})\b/gm,i=u(e,n);if(i.length>0)for(const s of i){const n=s.filter((e=>void 0!==e)),i=n[1],r=n[2];if(!r)continue;let c;if("rgb"===i){const t=/^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*\)$/gm;c=l(o(e,s),u(r,t),!1)}else if("rgba"===i){const t=/^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm;c=l(o(e,s),u(r,t),!0)}else if("hsl"===i){const t=/^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*\)$/gm;c=h(o(e,s),u(r,t),!1)}else if("hsla"===i){const t=/^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm;c=h(o(e,s),u(r,t),!0)}else"#"===i&&(c=a(o(e,s),i+r));c&&t.push(c)}return t}function d(e){return e&&"function"===typeof e.getValue&&"function"===typeof e.positionAt?c(e):[]}},74177:(e,t,n)=>{n.d(t,{A:()=>r});var i=n(11432),s=n(97297);function r(e,t,n,r){const o=(0,s.n2)(t,n.startLineNumber,n.startColumn),a=r.getLanguageConfiguration(o.languageId);if(!a)return null;const l=o.getLineContent(),h=l.substr(0,n.startColumn-1-o.firstCharOffset);let u;if(n.isEmpty())u=l.substr(n.startColumn-1-o.firstCharOffset);else{const e=(0,s.n2)(t,n.endLineNumber,n.endColumn);u=e.getLineContent().substr(n.endColumn-1-o.firstCharOffset)}let c="";if(n.startLineNumber>1&&0===o.firstCharOffset){const e=(0,s.n2)(t,n.startLineNumber-1);e.languageId===o.languageId&&(c=e.getLineContent())}const d=a.onEnter(e,c,h,u);if(!d)return null;const g=d.indentAction;let f=d.appendText;const m=d.removeText||0;f?g===i.wU.Indent&&(f="\t"+f):f=g===i.wU.Indent||g===i.wU.IndentOutdent?"\t":"";let p=(0,s.u0)(t,n.startLineNumber,n.startColumn);return m&&(p=p.substring(0,p.length-m)),{indentAction:g,appendText:f,removeText:m,indentation:p}}},61141:(e,t,n)=>{n.d(t,{O:()=>s});var i=n(21881);const s=(0,i.yh)("languageService")},11432:(e,t,n)=>{var i;n.d(t,{V6:()=>s,c$:()=>r,wU:()=>i}),function(e){e[e["None"]=0]="None",e[e["Indent"]=1]="Indent",e[e["IndentOutdent"]=2]="IndentOutdent",e[e["Outdent"]=3]="Outdent"}(i||(i={}));class s{constructor(e){if(this._neutralCharacter=null,this._neutralCharacterSearched=!1,this.open=e.open,this.close=e.close,this._inString=!0,this._inComment=!0,this._inRegEx=!0,Array.isArray(e.notIn))for(let t=0,n=e.notIn.length;t{n.d(t,{c_:()=>O,u0:()=>D,n2:()=>q});var i=n(11271),s=n(70959),r=n(61720),o=n(87738),a=n(11432),l=n(64371);class h{constructor(e){if(e.autoClosingPairs?this._autoClosingPairs=e.autoClosingPairs.map((e=>new a.V6(e))):e.brackets?this._autoClosingPairs=e.brackets.map((e=>new a.V6({open:e[0],close:e[1]}))):this._autoClosingPairs=[],e.__electricCharacterSupport&&e.__electricCharacterSupport.docComment){const t=e.__electricCharacterSupport.docComment;this._autoClosingPairs.push(new a.V6({open:t.open,close:t.close||""}))}this._autoCloseBeforeForQuotes="string"===typeof e.autoCloseBefore?e.autoCloseBefore:h.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_QUOTES,this._autoCloseBeforeForBrackets="string"===typeof e.autoCloseBefore?e.autoCloseBefore:h.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_BRACKETS,this._surroundingPairs=e.surroundingPairs||this._autoClosingPairs}getAutoClosingPairs(){return this._autoClosingPairs}getAutoCloseBeforeSet(e){return e?this._autoCloseBeforeForQuotes:this._autoCloseBeforeForBrackets}getSurroundingPairs(){return this._surroundingPairs}}h.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_QUOTES=";:.,=}])> \n\t",h.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_BRACKETS="'\"`;:.,=}])> \n\t";var u=n(21921),c=n(37758);class d{constructor(e){this._richEditBrackets=e}getElectricCharacters(){const e=[];if(this._richEditBrackets)for(const t of this._richEditBrackets.brackets)for(const n of t.close){const t=n.charAt(n.length-1);e.push(t)}return(0,u.EB)(e)}onElectricCharacter(e,t,n){if(!this._richEditBrackets||0===this._richEditBrackets.brackets.length)return null;const i=t.findTokenIndexAtOffset(n-1);if((0,l.Bu)(t.getStandardTokenType(i)))return null;const s=this._richEditBrackets.reversedRegex,r=t.getLineContent().substring(0,n-1)+e,o=c.Vr.findPrevBracketInRange(s,1,r,0,r.length);if(!o)return null;const a=r.substring(o.startColumn-1,o.endColumn-1).toLowerCase(),h=this._richEditBrackets.textIsOpenBracket[a];if(h)return null;const u=t.getActualLineContentBefore(o.startColumn-1);return/^\s*$/.test(u)?{matchOpenBracket:a}:null}}function g(e){return e.global&&(e.lastIndex=0),!0}class f{constructor(e){this._indentationRules=e}shouldIncrease(e){return!!(this._indentationRules&&this._indentationRules.increaseIndentPattern&&g(this._indentationRules.increaseIndentPattern)&&this._indentationRules.increaseIndentPattern.test(e))}shouldDecrease(e){return!!(this._indentationRules&&this._indentationRules.decreaseIndentPattern&&g(this._indentationRules.decreaseIndentPattern)&&this._indentationRules.decreaseIndentPattern.test(e))}shouldIndentNextLine(e){return!!(this._indentationRules&&this._indentationRules.indentNextLinePattern&&g(this._indentationRules.indentNextLinePattern)&&this._indentationRules.indentNextLinePattern.test(e))}shouldIgnore(e){return!!(this._indentationRules&&this._indentationRules.unIndentedLinePattern&&g(this._indentationRules.unIndentedLinePattern)&&this._indentationRules.unIndentedLinePattern.test(e))}getIndentMetadata(e){let t=0;return this.shouldIncrease(e)&&(t+=1),this.shouldDecrease(e)&&(t+=2),this.shouldIndentNextLine(e)&&(t+=4),this.shouldIgnore(e)&&(t+=8),t}}var m=n(98642);class p{constructor(e){e=e||{},e.brackets=e.brackets||[["(",")"],["{","}"],["[","]"]],this._brackets=[],e.brackets.forEach((e=>{const t=p._createOpenBracketRegExp(e[0]),n=p._createCloseBracketRegExp(e[1]);t&&n&&this._brackets.push({open:e[0],openRegExp:t,close:e[1],closeRegExp:n})})),this._regExpRules=e.onEnterRules||[]}onEnter(e,t,n,i){if(e>=3)for(let s=0,r=this._regExpRules.length;s!e.reg||(e.reg.lastIndex=0,e.reg.test(e.text))));if(r)return e.action}if(e>=2&&n.length>0&&i.length>0)for(let s=0,r=this._brackets.length;s=2&&n.length>0)for(let s=0,r=this._brackets.length;s{const t=new Set;return{info:new S(this,e,t),closing:t}})),s=new I.b((e=>{const t=new Set,n=new Set;return{info:new E(this,e,t,n),opening:t,openingColorized:n}}));for(const[o,a]of n){const e=i.get(o),t=s.get(a);e.closing.add(t.info),t.opening.add(e.info)}const r=t.colorizedBracketPairs?x(t.colorizedBracketPairs):n.filter((e=>!("<"===e[0]&&">"===e[1])));for(const[o,a]of r){const e=i.get(o),t=s.get(a);e.closing.add(t.info),t.openingColorized.add(e.info),t.opening.add(e.info)}this._openingBrackets=new Map([...i.cachedValues].map((([e,t])=>[e,t.info]))),this._closingBrackets=new Map([...s.cachedValues].map((([e,t])=>[e,t.info])))}get openingBrackets(){return[...this._openingBrackets.values()]}get closingBrackets(){return[...this._closingBrackets.values()]}getOpeningBracketInfo(e){return this._openingBrackets.get(e)}getClosingBracketInfo(e){return this._closingBrackets.get(e)}getBracketInfo(e){return this.getOpeningBracketInfo(e)||this.getClosingBracketInfo(e)}}function x(e){return e.filter((([e,t])=>""!==e&&""!==t))}class L{constructor(e,t){this.config=e,this.bracketText=t}get languageId(){return this.config.languageId}}class S extends L{constructor(e,t,n){super(e,t),this.openedBrackets=n,this.isOpeningBracket=!0}}class E extends L{constructor(e,t,n,i){super(e,t),this.openingBrackets=n,this.openingColorizedBrackets=i,this.isOpeningBracket=!1}closes(e){return e["config"]===this.config&&this.openingBrackets.has(e)}closesColorized(e){return e["config"]===this.config&&this.openingColorizedBrackets.has(e)}getOpeningBrackets(){return[...this.openingBrackets]}}var R=function(e,t,n,i){var s,r=arguments.length,o=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)o=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(s=e[a])&&(o=(r<3?s(o):r>3?s(t,n,o):s(t,n))||o);return r>3&&o&&Object.defineProperty(t,n,o),o},y=function(e,t){return function(n,i){t(n,i,e)}};class N{constructor(e){this.languageId=e}affects(e){return!this.languageId||this.languageId===e}}const O=(0,C.yh)("languageConfigurationService");let T=class extends s.JT{constructor(e,t){super(),this.configurationService=e,this.languageService=t,this._registry=this._register(new j),this.onDidChangeEmitter=this._register(new i.Q5),this.onDidChange=this.onDidChangeEmitter.event,this.configurations=new Map;const n=new Set(Object.values(P));this._register(this.configurationService.onDidChangeConfiguration((e=>{const t=e.change.keys.some((e=>n.has(e))),i=e.change.overrides.filter((([e,t])=>t.some((e=>n.has(e))))).map((([e])=>e));if(t)this.configurations.clear(),this.onDidChangeEmitter.fire(new N(void 0));else for(const n of i)this.languageService.isRegisteredLanguageId(n)&&(this.configurations.delete(n),this.onDidChangeEmitter.fire(new N(n)))}))),this._register(this._registry.onDidChange((e=>{this.configurations.delete(e.languageId),this.onDidChangeEmitter.fire(new N(e.languageId))})))}register(e,t,n){return this._registry.register(e,t,n)}getLanguageConfiguration(e){let t=this.configurations.get(e);return t||(t=B(e,this._registry,this.configurationService,this.languageService),this.configurations.set(e,t)),t}};function B(e,t,n,i){let s=t.getLanguageConfiguration(e);if(!s){if(!i.isRegisteredLanguageId(e))return new V(e,{});s=new V(e,{})}const r=M(s.languageId,n),o=F([s.underlyingConfig,r]),a=new V(s.languageId,o);return a}T=R([y(0,k.Ui),y(1,b.O)],T);const P={brackets:"editor.language.brackets",colorizedBracketPairs:"editor.language.colorizedBracketPairs"};function M(e,t){const n=t.getValue(P.brackets,{overrideIdentifier:e}),i=t.getValue(P.colorizedBracketPairs,{overrideIdentifier:e});return{brackets:A(n),colorizedBracketPairs:A(i)}}function A(e){if(Array.isArray(e))return e.map((e=>{if(Array.isArray(e)&&2===e.length)return[e[0],e[1]]})).filter((e=>!!e))}function D(e,t,n){const i=e.getLineContent(t);let s=r.V8(i);return s.length>n-1&&(s=s.substring(0,n-1)),s}function q(e,t,n){e.tokenization.forceTokenization(t);const i=e.tokenization.getLineTokens(t),s="undefined"===typeof n?e.getLineMaxColumn(t)-1:n-1;return(0,l.wH)(i,s)}class z{constructor(e){this.languageId=e,this._resolved=null,this._entries=[],this._order=0,this._resolved=null}register(e,t){const n=new H(e,t,++this._order);return this._entries.push(n),this._resolved=null,(0,s.OF)((()=>{for(let e=0;ee.configuration))))}}function F(e){let t={comments:void 0,brackets:void 0,wordPattern:void 0,indentationRules:void 0,onEnterRules:void 0,autoClosingPairs:void 0,surroundingPairs:void 0,autoCloseBefore:void 0,folding:void 0,colorizedBracketPairs:void 0,__electricCharacterSupport:void 0};for(const n of e)t={comments:n.comments||t.comments,brackets:n.brackets||t.brackets,wordPattern:n.wordPattern||t.wordPattern,indentationRules:n.indentationRules||t.indentationRules,onEnterRules:n.onEnterRules||t.onEnterRules,autoClosingPairs:n.autoClosingPairs||t.autoClosingPairs,surroundingPairs:n.surroundingPairs||t.surroundingPairs,autoCloseBefore:n.autoCloseBefore||t.autoCloseBefore,folding:n.folding||t.folding,colorizedBracketPairs:n.colorizedBracketPairs||t.colorizedBracketPairs,__electricCharacterSupport:n.__electricCharacterSupport||t.__electricCharacterSupport};return t}class H{constructor(e,t,n){this.configuration=e,this.priority=t,this.order=n}static cmp(e,t){return e.priority===t.priority?e.order-t.order:e.priority-t.priority}}class W{constructor(e){this.languageId=e}}class j extends s.JT{constructor(){super(),this._entries=new Map,this._onDidChange=this._register(new i.Q5),this.onDidChange=this._onDidChange.event,this._register(this.register(v.bd,{brackets:[["(",")"],["[","]"],["{","}"]],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],colorizedBracketPairs:[],folding:{offSide:!0}},0))}register(e,t,n=0){let i=this._entries.get(e);i||(i=new z(e),this._entries.set(e,i));const r=i.register(t,n);return this._onDidChange.fire(new W(e)),(0,s.OF)((()=>{r.dispose(),this._onDidChange.fire(new W(e))}))}getLanguageConfiguration(e){const t=this._entries.get(e);return(null===t||void 0===t?void 0:t.getResolvedConfiguration())||null}}class V{constructor(e,t){this.languageId=e,this.underlyingConfig=t,this._brackets=null,this._electricCharacter=null,this._onEnterSupport=this.underlyingConfig.brackets||this.underlyingConfig.indentationRules||this.underlyingConfig.onEnterRules?new p(this.underlyingConfig):null,this.comments=V._handleComments(this.underlyingConfig),this.characterPair=new h(this.underlyingConfig),this.wordDefinition=this.underlyingConfig.wordPattern||o.Af,this.indentationRules=this.underlyingConfig.indentationRules,this.underlyingConfig.indentationRules?this.indentRulesSupport=new f(this.underlyingConfig.indentationRules):this.indentRulesSupport=null,this.foldingRules=this.underlyingConfig.folding||{},this.bracketsNew=new _(e,this.underlyingConfig)}getWordDefinition(){return(0,o.eq)(this.wordDefinition)}get brackets(){return!this._brackets&&this.underlyingConfig.brackets&&(this._brackets=new c.EA(this.languageId,this.underlyingConfig.brackets)),this._brackets}get electricCharacter(){return this._electricCharacter||(this._electricCharacter=new d(this.brackets)),this._electricCharacter}onEnter(e,t,n,i){return this._onEnterSupport?this._onEnterSupport.onEnter(e,t,n,i):null}getAutoClosingPairs(){return new a.c$(this.characterPair.getAutoClosingPairs())}getAutoCloseBeforeSet(e){return this.characterPair.getAutoCloseBeforeSet(e)}getSurroundingPairs(){return this.characterPair.getSurroundingPairs()}static _handleComments(e){const t=e.comments;if(!t)return null;const n={};if(t.lineComment&&(n.lineCommentToken=t.lineComment),t.blockComment){const[e,i]=t.blockComment;n.blockCommentStartToken=e,n.blockCommentEndToken=i}return n}}(0,w.z)(O,T,1)},74531:(e,t,n)=>{n.d(t,{E:()=>c});var i=n(51099);class s{constructor(e,t,n){const i=new Uint8Array(e*t);for(let s=0,r=e*t;st&&(t=r),i>n&&(n=i),o>n&&(n=o)}t++,n++;const i=new s(n,t,0);for(let s=0,r=e.length;s=this._maxCharCode?0:this._states.get(e,t)}}let o=null;function a(){return null===o&&(o=new r([[1,104,2],[1,72,2],[1,102,6],[1,70,6],[2,116,3],[2,84,3],[3,116,4],[3,84,4],[4,112,5],[4,80,5],[5,115,9],[5,83,9],[5,58,10],[6,105,7],[6,73,7],[7,108,8],[7,76,8],[8,101,9],[8,69,9],[9,58,10],[10,47,11],[11,47,12]])),o}let l=null;function h(){if(null===l){l=new i.N(0);const e=" \t<>'\"、。。、,.:;‘〈「『〔([{「」}])〕』」〉’`~…";for(let n=0;ni);if(i>0){const e=t.charCodeAt(i-1),n=t.charCodeAt(r);(40===e&&41===n||91===e&&93===n||123===e&&125===n)&&r--}return{range:{startLineNumber:n,startColumn:i+1,endLineNumber:n,endColumn:r+2},url:t.substring(i,r+1)}}static computeLinks(e,t=a()){const n=h(),i=[];for(let s=1,r=e.getLineCount();s<=r;s++){const r=e.getLineContent(s),o=r.length;let a=0,l=0,h=0,c=1,d=!1,g=!1,f=!1,m=!1;while(a{n.d(t,{bd:()=>c,dQ:()=>u});var i=n(25206),s=n(11271),r=n(39672),o=n(96358),a=n(46853);const l={ModesRegistry:"editor.modesRegistry"};class h{constructor(){this._onDidChangeLanguages=new s.Q5,this.onDidChangeLanguages=this._onDidChangeLanguages.event,this._languages=[]}registerLanguage(e){return this._languages.push(e),this._onDidChangeLanguages.fire(void 0),{dispose:()=>{for(let t=0,n=this._languages.length;t{n.d(t,{Dy:()=>o,Ri:()=>r,TJ:()=>s});var i=n(67026);const s=new class{clone(){return this}equals(e){return this===e}};function r(e,t){return new i.hG([new i.WU(0,"",e)],t)}function o(e,t){const n=new Uint32Array(2);return n[0]=0,n[1]=(32768|e<<0|2<<24)>>>0,new i.DI(n,null===t?s:t)}},64371:(e,t,n)=>{function i(e,t){const n=e.getCount(),i=e.findTokenIndexAtOffset(t),r=e.getLanguageId(i);let o=i;while(o+10&&e.getLanguageId(a-1)===r)a--;return new s(e,r,a,o+1,e.getStartOffset(a),e.getEndOffset(o))}n.d(t,{Bu:()=>r,wH:()=>i});class s{constructor(e,t,n,i,s,r){this._scopedLineTokensBrand=void 0,this._actual=e,this.languageId=t,this._firstTokenIndex=n,this._lastTokenIndex=i,this.firstCharOffset=s,this._lastCharOffset=r}getLineContent(){const e=this._actual.getLineContent();return e.substring(this.firstCharOffset,this._lastCharOffset)}getActualLineContentBefore(e){const t=this._actual.getLineContent();return t.substring(0,this.firstCharOffset+e)}getTokenCount(){return this._lastTokenIndex-this._firstTokenIndex}findTokenIndexAtOffset(e){return this._actual.findTokenIndexAtOffset(e+this.firstCharOffset)-this._firstTokenIndex}getStandardTokenType(e){return this._actual.getStandardTokenType(e+this._firstTokenIndex)}}function r(e){return 0!==(3&e)}},61416:(e,t,n)=>{n.d(t,{J:()=>i});class i{constructor(){this._defaultValueSet=[["true","false"],["True","False"],["Private","Public","Friend","ReadOnly","Partial","Protected","WriteOnly"],["public","protected","private"]]}navigateValueSet(e,t,n,i,s){if(e&&t){const n=this.doNavigateValueSet(t,s);if(n)return{range:e,value:n}}if(n&&i){const e=this.doNavigateValueSet(i,s);if(e)return{range:n,value:e}}return null}doNavigateValueSet(e,t){const n=this.numberReplace(e,t);return null!==n?n:this.textReplace(e,t)}numberReplace(e,t){const n=Math.pow(10,e.length-(e.lastIndexOf(".")+1));let i=Number(e);const s=parseFloat(e);return isNaN(i)||isNaN(s)||i!==s?null:0!==i||t?(i=Math.floor(i*n),i+=t?n:-n,String(i/n)):null}textReplace(e,t){return this.valueSetsReplace(this._defaultValueSet,e,t)}valueSetsReplace(e,t,n){let i=null;for(let s=0,r=e.length;null===i&&s=0?(i+=n?1:-1,i<0?i=e.length-1:i%=e.length,e[i]):null}}i.INSTANCE=new i},37758:(e,t,n)=>{n.d(t,{EA:()=>l,Vr:()=>b});var i=n(61720),s=n(69427),r=n(33162);class o{constructor(e,t,n,i,s,r){this._richEditBracketBrand=void 0,this.languageId=e,this.index=t,this.open=n,this.close=i,this.forwardRegex=s,this.reversedRegex=r,this._openSet=o._toSet(this.open),this._closeSet=o._toSet(this.close)}isOpen(e){return this._openSet.has(e)}isClose(e){return this._closeSet.has(e)}static _toSet(e){const t=new Set;for(const n of e)t.add(n);return t}}function a(e){const t=e.length;e=e.map((e=>[e[0].toLowerCase(),e[1].toLowerCase()]));const n=[];for(let o=0;o{const[n,i]=e,[s,r]=t;return n===s||n===r||i===s||i===r},s=(e,i)=>{const s=Math.min(e,i),r=Math.max(e,i);for(let o=0;o0&&r.push({open:i,close:s})}return r}class l{constructor(e,t){this._richEditBracketsBrand=void 0;const n=a(t);this.brackets=n.map(((t,i)=>new o(e,i,t.open,t.close,d(t.open,t.close,n,i),g(t.open,t.close,n,i)))),this.forwardRegex=f(this.brackets),this.reversedRegex=m(this.brackets),this.textIsBracket={},this.textIsOpenBracket={},this.maxBracketLength=0;for(const i of this.brackets){for(const e of i.open)this.textIsBracket[e]=i,this.textIsOpenBracket[e]=!0,this.maxBracketLength=Math.max(this.maxBracketLength,e.length);for(const e of i.close)this.textIsBracket[e]=i,this.textIsOpenBracket[e]=!1,this.maxBracketLength=Math.max(this.maxBracketLength,e.length)}}}function h(e,t,n,i){for(let s=0,r=t.length;s=0&&i.push(t);for(const t of r.close)t.indexOf(e)>=0&&i.push(t)}}function u(e,t){return e.length-t.length}function c(e){if(e.length<=1)return e;const t=[],n=new Set;for(const i of e)n.has(i)||(t.push(i),n.add(i));return t}function d(e,t,n,i){let s=[];s=s.concat(e),s=s.concat(t);for(let r=0,o=s.length;r=0;i--)t[n++]=e.charCodeAt(i);return s.oe().decode(t)}let t=null,n=null;return function(i){return t!==i&&(t=i,n=e(t)),n}}();class b{static _findPrevBracketInText(e,t,n,i){const s=n.match(e);if(!s)return null;const o=n.length-(s.index||0),a=s[0].length,l=i+o;return new r.e(t,l-a+1,t,l+1)}static findPrevBracketInRange(e,t,n,i,s){const r=k(n),o=r.substring(n.length-s,n.length-i);return this._findPrevBracketInText(e,t,o,i)}static findNextBracketInText(e,t,n,i){const s=n.match(e);if(!s)return null;const o=s.index||0,a=s[0].length;if(0===a)return null;const l=i+o;return new r.e(t,l+1,t,l+1+a)}static findNextBracketInRange(e,t,n,i,s){const r=n.substring(i,s);return this.findNextBracketInText(e,t,r,i)}}},69055:(e,t,n)=>{n.d(t,{si:()=>h,yr:()=>m});var i=n(60204);class s{constructor(e,t,n,i,s){this._parsedThemeRuleBrand=void 0,this.token=e,this.index=t,this.fontStyle=n,this.foreground=i,this.background=s}}function r(e){if(!e||!Array.isArray(e))return[];const t=[];let n=0;for(let i=0,r=e.length;i{const n=d(e.token,t.token);return 0!==n?n:e.index-t.index}));let n=0,i="000000",s="ffffff";while(e.length>=1&&""===e[0].token){const t=e.shift();-1!==t.fontStyle&&(n=t.fontStyle),null!==t.foreground&&(i=t.foreground),null!==t.background&&(s=t.background)}const r=new l;for(const l of t)r.getId(l);const o=r.getId(i),a=r.getId(s),u=new g(n,o,a),c=new f(u);for(let l=0,h=e.length;l>>0,this._cache.set(t,n)}return(n|e<<0)>>>0}}const u=/\b(comment|string|regex|regexp)\b/;function c(e){const t=e.match(u);if(!t)return 0;switch(t[1]){case"comment":return 1;case"string":return 2;case"regex":return 3;case"regexp":return 3}throw new Error("Unexpected match for standard token type!")}function d(e,t){return et?1:0}class g{constructor(e,t,n){this._themeTrieElementRuleBrand=void 0,this._fontStyle=e,this._foreground=t,this._background=n,this.metadata=(this._fontStyle<<11|this._foreground<<15|this._background<<24)>>>0}clone(){return new g(this._fontStyle,this._foreground,this._background)}acceptOverwrite(e,t,n){-1!==e&&(this._fontStyle=e),0!==t&&(this._foreground=t),0!==n&&(this._background=n),this.metadata=(this._fontStyle<<11|this._foreground<<15|this._background<<24)>>>0}}class f{constructor(e){this._themeTrieElementBrand=void 0,this._mainRule=e,this._children=new Map}match(e){if(""===e)return this._mainRule;const t=e.indexOf(".");let n,i;-1===t?(n=e,i=""):(n=e.substring(0,t),i=e.substring(t+1));const s=this._children.get(n);return"undefined"!==typeof s?s.match(i):this._mainRule}insert(e,t,n,i){if(""===e)return void this._mainRule.acceptOverwrite(t,n,i);const s=e.indexOf(".");let r,o;-1===s?(r=e,o=""):(r=e.substring(0,s),o=e.substring(s+1));let a=this._children.get(r);"undefined"===typeof a&&(a=new f(this._mainRule.clone()),this._children.set(r,a)),a.insert(o,t,n,i)}}function m(e){const t=[];for(let n=1,i=e.length;n{n.d(t,{C2:()=>h,Fq:()=>u});var i=n(61720),s=n(81083),r=n(67026),o=n(89492),a=function(e,t,n,i){function s(e){return e instanceof n?e:new n((function(t){t(e)}))}return new(n||(n=Promise))((function(n,r){function o(e){try{l(i.next(e))}catch(t){r(t)}}function a(e){try{l(i["throw"](e))}catch(t){r(t)}}function l(e){e.done?n(e.value):s(e.value).then(o,a)}l((i=i.apply(e,t||[])).next())}))};const l={getInitialState:()=>o.TJ,tokenizeEncoded:(e,t,n)=>(0,o.Dy)(0,n)};function h(e,t,n){return a(this,void 0,void 0,(function*(){if(!n)return c(t,e.languageIdCodec,l);const i=yield r.RW.getOrCreate(n);return c(t,e.languageIdCodec,i||l)}))}function u(e,t,n,i,s,r,o){let a="
",l=i,h=0,u=!0;for(let c=0,d=t.getCount();c0)o&&u?(g+=" ",u=!1):(g+=" ",u=!0),e--;break}case 60:g+="<",u=!1;break;case 62:g+=">",u=!1;break;case 38:g+="&",u=!1;break;case 0:g+="�",u=!1;break;case 65279:case 8232:case 8233:case 133:g+="�",u=!1;break;case 13:g+="​",u=!1;break;case 32:o&&u?(g+=" ",u=!1):(g+=" ",u=!0);break;default:g+=String.fromCharCode(t),u=!1}}if(a+=`${g}`,d>s||l>=s)break}return a+="
",a}function c(e,t,n){let r='
';const o=i.uq(e);let a=n.getInitialState();for(let l=0,h=o.length;l0&&(r+="
");const h=n.tokenizeEncoded(e,!0,a);s.A.convertToEndOffset(h.tokens,e.length);const u=new s.A(h.tokens,e,t),c=u.inflate();let d=0;for(let t=0,n=c.getCount();t${i.YU(e.substring(d,s))}`,d=s}a=h.endState}return r+="
",r}},79857:(e,t,n)=>{n.d(t,{F5:()=>r,Hf:()=>u,Qi:()=>c,RM:()=>o,Tx:()=>d,U:()=>s,dJ:()=>l,je:()=>g,pt:()=>f,sh:()=>i,tk:()=>h});var i,s,r,o,a=n(2179);(function(e){e[e["Left"]=1]="Left",e[e["Center"]=2]="Center",e[e["Right"]=4]="Right",e[e["Full"]=7]="Full"})(i||(i={})),function(e){e[e["Left"]=1]="Left",e[e["Right"]=2]="Right"}(s||(s={})),function(e){e[e["Inline"]=1]="Inline",e[e["Gutter"]=2]="Gutter"}(r||(r={})),function(e){e[e["Both"]=0]="Both",e[e["Right"]=1]="Right",e[e["Left"]=2]="Left",e[e["None"]=3]="None"}(o||(o={}));class l{get originalIndentSize(){return this._indentSizeIsTabSize?"tabSize":this.indentSize}constructor(e){this._textModelResolvedOptionsBrand=void 0,this.tabSize=Math.max(1,0|e.tabSize),"tabSize"===e.indentSize?(this.indentSize=this.tabSize,this._indentSizeIsTabSize=!0):(this.indentSize=Math.max(1,0|e.indentSize),this._indentSizeIsTabSize=!1),this.insertSpaces=Boolean(e.insertSpaces),this.defaultEOL=0|e.defaultEOL,this.trimAutoWhitespace=Boolean(e.trimAutoWhitespace),this.bracketPairColorizationOptions=e.bracketPairColorizationOptions}equals(e){return this.tabSize===e.tabSize&&this._indentSizeIsTabSize===e._indentSizeIsTabSize&&this.indentSize===e.indentSize&&this.insertSpaces===e.insertSpaces&&this.defaultEOL===e.defaultEOL&&this.trimAutoWhitespace===e.trimAutoWhitespace&&(0,a.fS)(this.bracketPairColorizationOptions,e.bracketPairColorizationOptions)}createChangeEvent(e){return{tabSize:this.tabSize!==e.tabSize,indentSize:this.indentSize!==e.indentSize,insertSpaces:this.insertSpaces!==e.insertSpaces,trimAutoWhitespace:this.trimAutoWhitespace!==e.trimAutoWhitespace}}}class h{constructor(e,t){this._findMatchBrand=void 0,this.range=e,this.matches=t}}function u(e){return e&&"function"===typeof e.read}class c{constructor(e,t,n,i,s,r){this.identifier=e,this.range=t,this.text=n,this.forceMoveMarkers=i,this.isAutoWhitespaceEdit=s,this._isTracked=r}}class d{constructor(e,t,n){this.regex=e,this.wordSeparators=t,this.simpleSearch=n}}class g{constructor(e,t,n){this.reverseEdits=e,this.changes=t,this.trimAutoWhitespaceLineNumbers=n}}function f(e){return!e.isTooLargeForSyncing()&&!e.isForSimpleWidget}},83155:(e,t,n)=>{n.d(t,{gD:()=>o});var i=n(65662),s=n(89999),r=n(79857);class o{constructor(e,t,n,i,s){this.injectionOffsets=e,this.injectionOptions=t,this.breakOffsets=n,this.breakOffsetsVisibleColumn=i,this.wrappedTextIndentLength=s}getOutputLineCount(){return this.breakOffsets.length}getMinOutputOffset(e){return e>0?this.wrappedTextIndentLength:0}getLineLength(e){const t=e>0?this.breakOffsets[e-1]:0,n=this.breakOffsets[e];let i=n-t;return e>0&&(i+=this.wrappedTextIndentLength),i}getMaxOutputOffset(e){return this.getLineLength(e)}translateToInputOffset(e,t){e>0&&(t=Math.max(0,t-this.wrappedTextIndentLength));const n=0===e?t:this.breakOffsets[e-1]+t;let i=n;if(null!==this.injectionOffsets)for(let s=0;sthis.injectionOffsets[s]))break;i0?this.breakOffsets[s-1]:0,0===t)if(e<=r)i=s-1;else{if(!(e>o))break;n=s+1}else if(e=o))break;n=s+1}}let o=e-r;return s>0&&(o+=this.wrappedTextIndentLength),new h(s,o)}normalizeOutputPosition(e,t,n){if(null!==this.injectionOffsets){const i=this.outputPositionToOffsetInInputWithInjections(e,t),s=this.normalizeOffsetInInputWithInjectionsAroundInjections(i,n);if(s!==i)return this.offsetInInputWithInjectionsToOutputPosition(s,n)}if(0===n){if(e>0&&t===this.getMinOutputOffset(e))return new h(e-1,this.getMaxOutputOffset(e-1))}else if(1===n){const n=this.getOutputLineCount()-1;if(e0&&(t=Math.max(0,t-this.wrappedTextIndentLength));const n=(e>0?this.breakOffsets[e-1]:0)+t;return n}normalizeOffsetInInputWithInjectionsAroundInjections(e,t){const n=this.getInjectedTextAtOffset(e);if(!n)return e;if(2===t){if(e===n.offsetInInputWithInjections+n.length&&a(this.injectionOptions[n.injectedTextIndex].cursorStops))return n.offsetInInputWithInjections+n.length;{let e=n.offsetInInputWithInjections;if(l(this.injectionOptions[n.injectedTextIndex].cursorStops))return e;let t=n.injectedTextIndex-1;while(t>=0&&this.injectionOffsets[t]===this.injectionOffsets[n.injectedTextIndex]){if(a(this.injectionOptions[t].cursorStops))break;if(e-=this.injectionOptions[t].content.length,l(this.injectionOptions[t].cursorStops))break;t--}return e}}if(1===t||4===t){let e=n.offsetInInputWithInjections+n.length,t=n.injectedTextIndex;while(t+1=0&&this.injectionOffsets[t-1]===this.injectionOffsets[t])e-=this.injectionOptions[t-1].content.length,t--;return e}(0,i.vE)(t)}getInjectedText(e,t){const n=this.outputPositionToOffsetInInputWithInjections(e,t),i=this.getInjectedTextAtOffset(n);return i?{options:this.injectionOptions[i.injectedTextIndex]}:null}getInjectedTextAtOffset(e){const t=this.injectionOffsets,n=this.injectionOptions;if(null!==t){let i=0;for(let s=0;se)break;if(e<=a)return{injectedTextIndex:s,offsetInInputWithInjections:o,length:r};i+=r}}}}function a(e){return null===e||void 0===e||(e===r.RM.Right||e===r.RM.Both)}function l(e){return null===e||void 0===e||(e===r.RM.Left||e===r.RM.Both)}class h{constructor(e,t){this.outputLineIndex=e,this.outputOffset=t}toString(){return`${this.outputLineIndex}:${this.outputOffset}`}toPosition(e){return new s.L(e+this.outputLineIndex,this.outputOffset+1)}}},53087:(e,t,n)=>{n.d(t,{Q:()=>_});var i=n(21921),s=n(11271),r=n(70959),o=n(33162),a=n(64371),l=n(37758),h=n(96821),u=n(2371),c=n(18594),d=n(25624),g=n(38219),f=n(28068),m=n(754),p=n(81452);class C extends r.JT{didLanguageChange(e){return this.brackets.didLanguageChange(e)}constructor(e,t){if(super(),this.textModel=e,this.getLanguageConfiguration=t,this.didChangeEmitter=new s.Q5,this.denseKeyProvider=new f.FE,this.brackets=new c.Z(this.denseKeyProvider,this.getLanguageConfiguration),this.onDidChange=this.didChangeEmitter.event,this.queuedTextEditsForInitialAstWithoutTokens=[],this.queuedTextEdits=[],e.tokenization.hasTokens)2===e.tokenization.backgroundTokenizationState?(this.initialAstWithoutTokens=void 0,this.astWithTokens=this.parseDocumentFromTextBuffer([],void 0,!1)):(this.initialAstWithoutTokens=this.parseDocumentFromTextBuffer([],void 0,!0),this.astWithTokens=this.initialAstWithoutTokens);else{const e=this.brackets.getSingleLanguageBracketTokens(this.textModel.getLanguageId()),t=new m.g(this.textModel.getValue(),e);this.initialAstWithoutTokens=(0,g.w)(t,[],void 0,!0),this.astWithTokens=this.initialAstWithoutTokens}}handleDidChangeBackgroundTokenizationState(){if(2===this.textModel.tokenization.backgroundTokenizationState){const e=void 0===this.initialAstWithoutTokens;this.initialAstWithoutTokens=void 0,e||this.didChangeEmitter.fire()}}handleDidChangeTokens({ranges:e}){const t=e.map((e=>new u.Q((0,d.Hg)(e.fromLineNumber-1,0),(0,d.Hg)(e.toLineNumber,0),(0,d.Hg)(e.toLineNumber-e.fromLineNumber+1,0))));this.handleEdits(t,!0),this.initialAstWithoutTokens||this.didChangeEmitter.fire()}handleContentChanged(e){const t=u.Q.fromModelContentChanges(e.changes);this.handleEdits(t,!1)}handleEdits(e,t){const n=(0,p.o)(this.queuedTextEdits,e);this.queuedTextEdits=n,this.initialAstWithoutTokens&&!t&&(this.queuedTextEditsForInitialAstWithoutTokens=(0,p.o)(this.queuedTextEditsForInitialAstWithoutTokens,e))}flushQueue(){this.queuedTextEdits.length>0&&(this.astWithTokens=this.parseDocumentFromTextBuffer(this.queuedTextEdits,this.astWithTokens,!1),this.queuedTextEdits=[]),this.queuedTextEditsForInitialAstWithoutTokens.length>0&&(this.initialAstWithoutTokens&&(this.initialAstWithoutTokens=this.parseDocumentFromTextBuffer(this.queuedTextEditsForInitialAstWithoutTokens,this.initialAstWithoutTokens,!1)),this.queuedTextEditsForInitialAstWithoutTokens=[])}parseDocumentFromTextBuffer(e,t,n){const i=!1,s=i?null===t||void 0===t?void 0:t.deepClone():t,r=new m.xH(this.textModel,this.brackets),o=(0,g.w)(r,e,s,n);return o}getBracketsInRange(e,t){this.flushQueue();const n=(0,d.Hg)(e.startLineNumber-1,e.startColumn-1),s=(0,d.Hg)(e.endLineNumber-1,e.endColumn-1);return new i.W$((e=>{const i=this.initialAstWithoutTokens||this.astWithTokens;w(i,d.xl,i.length,n,s,e,0,0,new Map,t)}))}getBracketPairsInRange(e,t){this.flushQueue();const n=(0,d.PZ)(e.getStartPosition()),s=(0,d.PZ)(e.getEndPosition());return new i.W$((e=>{const i=this.initialAstWithoutTokens||this.astWithTokens,r=new v(e,t,this.textModel);I(i,d.xl,i.length,n,s,r,0,new Map)}))}getFirstBracketAfter(e){this.flushQueue();const t=this.initialAstWithoutTokens||this.astWithTokens;return b(t,d.xl,t.length,(0,d.PZ)(e))}getFirstBracketBefore(e){this.flushQueue();const t=this.initialAstWithoutTokens||this.astWithTokens;return k(t,d.xl,t.length,(0,d.PZ)(e))}}function k(e,t,n,i){if(4===e.kind||2===e.kind){const s=[];for(const i of e.children)n=(0,d.Ii)(t,i.length),s.push({nodeOffsetStart:t,nodeOffsetEnd:n}),t=n;for(let t=s.length-1;t>=0;t--){const{nodeOffsetStart:n,nodeOffsetEnd:r}=s[t];if((0,d.VR)(n,i)){const s=k(e.children[t],n,r,i);if(s)return s}}return null}if(3===e.kind)return null;if(1===e.kind){const i=(0,d.Qw)(t,n);return{bracketInfo:e.bracketInfo,range:i}}return null}function b(e,t,n,i){if(4===e.kind||2===e.kind){for(const s of e.children){if(n=(0,d.Ii)(t,s.length),(0,d.VR)(i,n)){const e=b(s,t,n,i);if(e)return e}t=n}return null}if(3===e.kind)return null;if(1===e.kind){const i=(0,d.Qw)(t,n);return{bracketInfo:e.bracketInfo,range:i}}return null}function w(e,t,n,i,s,r,o,a,l,u,c=!1){if(o>200)return!0;e:while(1)switch(e.kind){case 4:{const a=e.childrenLength;for(let h=0;h200)return!0;let u=!0;if(2===e.kind){let c=0;if(a){let t=a.get(e.openingBracket.text);void 0===t&&(t=0),c=t,t++,a.set(e.openingBracket.text,t)}const g=(0,d.Ii)(t,e.openingBracket.length);let f=-1;if(r.includeMinIndentation&&(f=e.computeMinIndentation(t,r.textModel)),u=r.push(new h.YA((0,d.Qw)(t,n),(0,d.Qw)(t,g),e.closingBracket?(0,d.Qw)((0,d.Ii)(g,(null===(l=e.child)||void 0===l?void 0:l.length)||d.xl),n):void 0,o,c,e,f)),t=g,u&&e.child){const l=e.child;if(n=(0,d.Ii)(t,l.length),(0,d.By)(t,s)&&(0,d.Zq)(n,i)&&(u=I(l,t,n,i,s,r,o+1,a),!u))return!1}null===a||void 0===a||a.set(e.openingBracket.text,c)}else{let n=t;for(const t of e.children){const e=n;if(n=(0,d.Ii)(n,t.length),(0,d.By)(e,s)&&(0,d.By)(i,n)&&(u=I(t,e,n,i,s,r,o,a),!u))return!1}}return u}class _ extends r.JT{get canBuildAST(){const e=5e6;return this.textModel.getValueLength()<=e}constructor(e,t){super(),this.textModel=e,this.languageConfigurationService=t,this.bracketPairsTree=this._register(new r.XK),this.onDidChangeEmitter=new s.Q5,this.onDidChange=this.onDidChangeEmitter.event,this.bracketsRequested=!1,this._register(this.languageConfigurationService.onDidChange((e=>{var t;e.languageId&&!(null===(t=this.bracketPairsTree.value)||void 0===t?void 0:t.object.didLanguageChange(e.languageId))||(this.bracketPairsTree.clear(),this.updateBracketPairsTree())})))}handleDidChangeOptions(e){this.bracketPairsTree.clear(),this.updateBracketPairsTree()}handleDidChangeLanguage(e){this.bracketPairsTree.clear(),this.updateBracketPairsTree()}handleDidChangeContent(e){var t;null===(t=this.bracketPairsTree.value)||void 0===t||t.object.handleContentChanged(e)}handleDidChangeBackgroundTokenizationState(){var e;null===(e=this.bracketPairsTree.value)||void 0===e||e.object.handleDidChangeBackgroundTokenizationState()}handleDidChangeTokens(e){var t;null===(t=this.bracketPairsTree.value)||void 0===t||t.object.handleDidChangeTokens(e)}updateBracketPairsTree(){if(this.bracketsRequested&&this.canBuildAST){if(!this.bracketPairsTree.value){const e=new r.SL;this.bracketPairsTree.value=x(e.add(new C(this.textModel,(e=>this.languageConfigurationService.getLanguageConfiguration(e)))),e),e.add(this.bracketPairsTree.value.object.onDidChange((e=>this.onDidChangeEmitter.fire(e)))),this.onDidChangeEmitter.fire()}}else this.bracketPairsTree.value&&(this.bracketPairsTree.clear(),this.onDidChangeEmitter.fire())}getBracketPairsInRange(e){var t;return this.bracketsRequested=!0,this.updateBracketPairsTree(),(null===(t=this.bracketPairsTree.value)||void 0===t?void 0:t.object.getBracketPairsInRange(e,!1))||i.W$.empty}getBracketPairsInRangeWithMinIndentation(e){var t;return this.bracketsRequested=!0,this.updateBracketPairsTree(),(null===(t=this.bracketPairsTree.value)||void 0===t?void 0:t.object.getBracketPairsInRange(e,!0))||i.W$.empty}getBracketsInRange(e,t=!1){var n;return this.bracketsRequested=!0,this.updateBracketPairsTree(),(null===(n=this.bracketPairsTree.value)||void 0===n?void 0:n.object.getBracketsInRange(e,t))||i.W$.empty}findMatchingBracketUp(e,t,n){const i=this.textModel.validatePosition(t),s=this.textModel.getLanguageIdAtPosition(i.lineNumber,i.column);if(this.canBuildAST){const n=this.languageConfigurationService.getLanguageConfiguration(s).bracketsNew.getClosingBracketInfo(e);if(!n)return null;const i=this.getBracketPairsInRange(o.e.fromPositions(t,t)).findLast((e=>n.closes(e.openingBracketInfo)));return i?i.openingBracketRange:null}{const t=e.toLowerCase(),r=this.languageConfigurationService.getLanguageConfiguration(s).brackets;if(!r)return null;const o=r.textIsBracket[t];return o?E(this._findMatchingBracketUp(o,i,L(n))):null}}matchBracket(e,t){if(this.canBuildAST){const t=this.getBracketPairsInRange(o.e.fromPositions(e,e)).filter((t=>void 0!==t.closingBracketRange&&(t.openingBracketRange.containsPosition(e)||t.closingBracketRange.containsPosition(e)))).findLastMaxBy((0,i.tT)((t=>t.openingBracketRange.containsPosition(e)?t.openingBracketRange:t.closingBracketRange),o.e.compareRangesUsingStarts));return t?[t.openingBracketRange,t.closingBracketRange]:null}{const n=L(t);return this._matchBracket(this.textModel.validatePosition(e),n)}}_establishBracketSearchOffsets(e,t,n,i){const s=t.getCount(),r=t.getLanguageId(i);let o=Math.max(0,e.column-1-n.maxBracketLength);for(let h=i-1;h>=0;h--){const e=t.getEndOffset(h);if(e<=o)break;if((0,a.Bu)(t.getStandardTokenType(h))||t.getLanguageId(h)!==r){o=e;break}}let l=Math.min(t.getLineContent().length,e.column-1+n.maxBracketLength);for(let h=i+1;h=l)break;if((0,a.Bu)(t.getStandardTokenType(h))||t.getLanguageId(h)!==r){l=e;break}}return{searchStartOffset:o,searchEndOffset:l}}_matchBracket(e,t){const n=e.lineNumber,i=this.textModel.tokenization.getLineTokens(n),s=this.textModel.getLineContent(n),r=i.findTokenIndexAtOffset(e.column-1);if(r<0)return null;const o=this.languageConfigurationService.getLanguageConfiguration(i.getLanguageId(r)).brackets;if(o&&!(0,a.Bu)(i.getStandardTokenType(r))){let{searchStartOffset:a,searchEndOffset:h}=this._establishBracketSearchOffsets(e,i,o,r),u=null;while(1){const i=l.Vr.findNextBracketInRange(o.forwardRegex,n,s,a,h);if(!i)break;if(i.startColumn<=e.column&&e.column<=i.endColumn){const e=s.substring(i.startColumn-1,i.endColumn-1).toLowerCase(),n=this._matchFoundBracket(i,o.textIsBracket[e],o.textIsOpenBracket[e],t);if(n){if(n instanceof S)return null;u=n}}a=i.endColumn-1}if(u)return u}if(r>0&&i.getStartOffset(r)===e.column-1){const o=r-1,h=this.languageConfigurationService.getLanguageConfiguration(i.getLanguageId(o)).brackets;if(h&&!(0,a.Bu)(i.getStandardTokenType(o))){const{searchStartOffset:r,searchEndOffset:a}=this._establishBracketSearchOffsets(e,i,h,o),u=l.Vr.findPrevBracketInRange(h.reversedRegex,n,s,r,a);if(u&&u.startColumn<=e.column&&e.column<=u.endColumn){const e=s.substring(u.startColumn-1,u.endColumn-1).toLowerCase(),n=this._matchFoundBracket(u,h.textIsBracket[e],h.textIsOpenBracket[e],t);if(n)return n instanceof S?null:n}}}return null}_matchFoundBracket(e,t,n,i){if(!t)return null;const s=n?this._findMatchingBracketDown(t,e.getEndPosition(),i):this._findMatchingBracketUp(t,e.getStartPosition(),i);return s?s instanceof S?s:[e,s]:null}_findMatchingBracketUp(e,t,n){const i=e.languageId,s=e.reversedRegex;let r=-1,o=0;const h=(t,i,a,h)=>{while(1){if(n&&++o%100===0&&!n())return S.INSTANCE;const u=l.Vr.findPrevBracketInRange(s,t,i,a,h);if(!u)break;const c=i.substring(u.startColumn-1,u.endColumn-1).toLowerCase();if(e.isOpen(c)?r++:e.isClose(c)&&r--,0===r)return u;h=u.startColumn-1}return null};for(let l=t.lineNumber;l>=1;l--){const e=this.textModel.tokenization.getLineTokens(l),n=e.getCount(),s=this.textModel.getLineContent(l);let r=n-1,o=s.length,u=s.length;l===t.lineNumber&&(r=e.findTokenIndexAtOffset(t.column-1),o=t.column-1,u=t.column-1);let c=!0;for(;r>=0;r--){const t=e.getLanguageId(r)===i&&!(0,a.Bu)(e.getStandardTokenType(r));if(t)c?o=e.getStartOffset(r):(o=e.getStartOffset(r),u=e.getEndOffset(r));else if(c&&o!==u){const e=h(l,s,o,u);if(e)return e}c=t}if(c&&o!==u){const e=h(l,s,o,u);if(e)return e}}return null}_findMatchingBracketDown(e,t,n){const i=e.languageId,s=e.forwardRegex;let r=1,o=0;const h=(t,i,a,h)=>{while(1){if(n&&++o%100===0&&!n())return S.INSTANCE;const u=l.Vr.findNextBracketInRange(s,t,i,a,h);if(!u)break;const c=i.substring(u.startColumn-1,u.endColumn-1).toLowerCase();if(e.isOpen(c)?r++:e.isClose(c)&&r--,0===r)return u;a=u.endColumn-1}return null},u=this.textModel.getLineCount();for(let l=t.lineNumber;l<=u;l++){const e=this.textModel.tokenization.getLineTokens(l),n=e.getCount(),s=this.textModel.getLineContent(l);let r=0,o=0,u=0;l===t.lineNumber&&(r=e.findTokenIndexAtOffset(t.column-1),o=t.column-1,u=t.column-1);let c=!0;for(;r=1;o--){const e=this.textModel.tokenization.getLineTokens(o),t=e.getCount(),h=this.textModel.getLineContent(o);let u=t-1,c=h.length,d=h.length;if(o===n.lineNumber){u=e.findTokenIndexAtOffset(n.column-1),c=n.column-1,d=n.column-1;const t=e.getLanguageId(u);i!==t&&(i=t,s=this.languageConfigurationService.getLanguageConfiguration(i).brackets,r=this.languageConfigurationService.getLanguageConfiguration(i).bracketsNew)}let g=!0;for(;u>=0;u--){const t=e.getLanguageId(u);if(i!==t){if(s&&r&&g&&c!==d){const e=l.Vr.findPrevBracketInRange(s.reversedRegex,o,h,c,d);if(e)return this._toFoundBracket(r,e);g=!1}i=t,s=this.languageConfigurationService.getLanguageConfiguration(i).brackets,r=this.languageConfigurationService.getLanguageConfiguration(i).bracketsNew}const n=!!s&&!(0,a.Bu)(e.getStandardTokenType(u));if(n)g?c=e.getStartOffset(u):(c=e.getStartOffset(u),d=e.getEndOffset(u));else if(r&&s&&g&&c!==d){const e=l.Vr.findPrevBracketInRange(s.reversedRegex,o,h,c,d);if(e)return this._toFoundBracket(r,e)}g=n}if(r&&s&&g&&c!==d){const e=l.Vr.findPrevBracketInRange(s.reversedRegex,o,h,c,d);if(e)return this._toFoundBracket(r,e)}}return null}findNextBracket(e){var t;const n=this.textModel.validatePosition(e);if(this.canBuildAST)return this.bracketsRequested=!0,this.updateBracketPairsTree(),(null===(t=this.bracketPairsTree.value)||void 0===t?void 0:t.object.getFirstBracketAfter(n))||null;const i=this.textModel.getLineCount();let s=null,r=null,o=null;for(let h=n.lineNumber;h<=i;h++){const e=this.textModel.tokenization.getLineTokens(h),t=e.getCount(),i=this.textModel.getLineContent(h);let u=0,c=0,d=0;if(h===n.lineNumber){u=e.findTokenIndexAtOffset(n.column-1),c=n.column-1,d=n.column-1;const t=e.getLanguageId(u);s!==t&&(s=t,r=this.languageConfigurationService.getLanguageConfiguration(s).brackets,o=this.languageConfigurationService.getLanguageConfiguration(s).bracketsNew)}let g=!0;for(;uvoid 0!==t.closingBracketRange&&t.range.strictContainsRange(e)));return t?[t.openingBracketRange,t.closingBracketRange]:null}const i=L(t),s=this.textModel.getLineCount(),r=new Map;let h=[];const u=(e,t)=>{if(!r.has(e)){const n=[];for(let e=0,i=t?t.brackets.length:0;e{while(1){if(i&&++c%100===0&&!i())return S.INSTANCE;const o=l.Vr.findNextBracketInRange(e.forwardRegex,t,n,s,r);if(!o)break;const a=n.substring(o.startColumn-1,o.endColumn-1).toLowerCase(),u=e.textIsBracket[a];if(u&&(u.isOpen(a)?h[u.index]++:u.isClose(a)&&h[u.index]--,-1===h[u.index]))return this._matchFoundBracket(o,u,!1,i);s=o.endColumn-1}return null};let g=null,f=null;for(let o=n.lineNumber;o<=s;o++){const e=this.textModel.tokenization.getLineTokens(o),t=e.getCount(),i=this.textModel.getLineContent(o);let s=0,r=0,l=0;if(o===n.lineNumber){s=e.findTokenIndexAtOffset(n.column-1),r=n.column-1,l=n.column-1;const t=e.getLanguageId(s);g!==t&&(g=t,f=this.languageConfigurationService.getLanguageConfiguration(g).brackets,u(g,f))}let h=!0;for(;snull===t||void 0===t?void 0:t.dispose()}}function L(e){if("undefined"===typeof e)return()=>!0;{const t=Date.now();return()=>Date.now()-t<=e}}class S{constructor(){this._searchCanceledBrand=void 0}}function E(e){return e instanceof S?null:e}S.INSTANCE=new S},52454:(e,t,n)=>{n.d(t,{BH:()=>p,Dm:()=>k,Kd:()=>l,Y0:()=>h,n2:()=>C});var i=n(98642),s=n(16779),r=n(25624),o=n(28068);class a{get length(){return this._length}constructor(e){this._length=e}}class l extends a{static create(e,t,n){let i=e.length;return t&&(i=(0,r.Ii)(i,t.length)),n&&(i=(0,r.Ii)(i,n.length)),new l(i,e,t,n,t?t.missingOpeningBracketIds:o.tS.getEmpty())}get kind(){return 2}get listHeight(){return 0}get childrenLength(){return 3}getChild(e){switch(e){case 0:return this.openingBracket;case 1:return this.child;case 2:return this.closingBracket}throw new Error("Invalid child index")}get children(){const e=[];return e.push(this.openingBracket),this.child&&e.push(this.child),this.closingBracket&&e.push(this.closingBracket),e}constructor(e,t,n,i,s){super(e),this.openingBracket=t,this.child=n,this.closingBracket=i,this.missingOpeningBracketIds=s}canBeReused(e){return null!==this.closingBracket&&!e.intersects(this.missingOpeningBracketIds)}deepClone(){return new l(this.length,this.openingBracket.deepClone(),this.child&&this.child.deepClone(),this.closingBracket&&this.closingBracket.deepClone(),this.missingOpeningBracketIds)}computeMinIndentation(e,t){return this.child?this.child.computeMinIndentation((0,r.Ii)(e,this.openingBracket.length),t):Number.MAX_SAFE_INTEGER}}class h extends a{static create23(e,t,n,i=!1){let s=e.length,o=e.missingOpeningBracketIds;if(e.listHeight!==t.listHeight)throw new Error("Invalid list heights");if(s=(0,r.Ii)(s,t.length),o=o.merge(t.missingOpeningBracketIds),n){if(e.listHeight!==n.listHeight)throw new Error("Invalid list heights");s=(0,r.Ii)(s,n.length),o=o.merge(n.missingOpeningBracketIds)}return i?new c(s,e.listHeight+1,e,t,n,o):new u(s,e.listHeight+1,e,t,n,o)}static getEmpty(){return new g(r.xl,0,[],o.tS.getEmpty())}get kind(){return 4}get missingOpeningBracketIds(){return this._missingOpeningBracketIds}constructor(e,t,n){super(e),this.listHeight=t,this._missingOpeningBracketIds=n,this.cachedMinIndentation=-1}throwIfImmutable(){}makeLastElementMutable(){this.throwIfImmutable();const e=this.childrenLength;if(0===e)return;const t=this.getChild(e-1),n=4===t.kind?t.toMutable():t;return t!==n&&this.setChild(e-1,n),n}makeFirstElementMutable(){this.throwIfImmutable();const e=this.childrenLength;if(0===e)return;const t=this.getChild(0),n=4===t.kind?t.toMutable():t;return t!==n&&this.setChild(0,n),n}canBeReused(e){if(e.intersects(this.missingOpeningBracketIds))return!1;if(0===this.childrenLength)return!1;let t=this;while(4===t.kind){const e=t.childrenLength;if(0===e)throw new i.he;t=t.getChild(e-1)}return t.canBeReused(e)}handleChildrenChanged(){this.throwIfImmutable();const e=this.childrenLength;let t=this.getChild(0).length,n=this.getChild(0).missingOpeningBracketIds;for(let i=1;i{n.d(t,{Q:()=>r,Y:()=>o});var i=n(33162),s=n(25624);class r{static fromModelContentChanges(e){const t=e.map((e=>{const t=i.e.lift(e.range);return new r((0,s.PZ)(t.getStartPosition()),(0,s.PZ)(t.getEndPosition()),(0,s.oR)(e.text))})).reverse();return t}constructor(e,t,n){this.startOffset=e,this.endOffset=t,this.newLength=n}toString(){return`[${(0,s.Hw)(this.startOffset)}...${(0,s.Hw)(this.endOffset)}) -> ${(0,s.Hw)(this.newLength)}`}}class o{constructor(e){this.nextEditIdx=0,this.deltaOldToNewLineCount=0,this.deltaOldToNewColumnCount=0,this.deltaLineIdxInOld=-1,this.edits=e.map((e=>a.from(e)))}getOffsetBeforeChange(e){return this.adjustNextEdit(e),this.translateCurToOld(e)}getDistanceToNextChange(e){this.adjustNextEdit(e);const t=this.edits[this.nextEditIdx],n=t?this.translateOldToCur(t.offsetObj):null;return null===n?null:(0,s.BE)(e,n)}translateOldToCur(e){return e.lineCount===this.deltaLineIdxInOld?(0,s.Hg)(e.lineCount+this.deltaOldToNewLineCount,e.columnCount+this.deltaOldToNewColumnCount):(0,s.Hg)(e.lineCount+this.deltaOldToNewLineCount,e.columnCount)}translateCurToOld(e){const t=(0,s.Hw)(e);return t.lineCount-this.deltaOldToNewLineCount===this.deltaLineIdxInOld?(0,s.Hg)(t.lineCount-this.deltaOldToNewLineCount,t.columnCount-this.deltaOldToNewColumnCount):(0,s.Hg)(t.lineCount-this.deltaOldToNewLineCount,t.columnCount)}adjustNextEdit(e){while(this.nextEditIdx{n.d(t,{Z:()=>u});var i=n(61720),s=n(52454),r=n(25624),o=n(28068),a=n(754);class l{static createFromLanguage(e,t){function n(e){return t.getKey(`${e.languageId}:::${e.bracketText}`)}const i=new Map;for(const l of e.bracketsNew.openingBrackets){const e=(0,r.Hg)(0,l.bracketText.length),t=n(l),h=o.tS.getEmpty().add(t,o.Qw);i.set(l.bracketText,new a.WU(e,1,t,h,s.n2.create(e,l,h)))}for(const l of e.bracketsNew.closingBrackets){const e=(0,r.Hg)(0,l.bracketText.length);let t=o.tS.getEmpty();const h=l.getOpeningBrackets();for(const i of h)t=t.add(n(i),o.Qw);i.set(l.bracketText,new a.WU(e,2,n(h[0]),t,s.n2.create(e,l,t)))}return new l(i)}constructor(e){this.map=e,this.hasRegExp=!1,this._regExpGlobal=null}getRegExpStr(){if(this.isEmpty)return null;{const e=[...this.map.keys()];return e.sort(),e.reverse(),e.map((e=>h(e))).join("|")}}get regExpGlobal(){if(!this.hasRegExp){const e=this.getRegExpStr();this._regExpGlobal=e?new RegExp(e,"gi"):null,this.hasRegExp=!0}return this._regExpGlobal}getToken(e){return this.map.get(e.toLowerCase())}findClosingTokenText(e){for(const[t,n]of this.map)if(2===n.kind&&n.bracketIds.intersects(e))return t}get isEmpty(){return 0===this.map.size}}function h(e){let t=(0,i.ec)(e);return/^[\w ]+/.test(e)&&(t=`\\b${t}`),/[\w ]+$/.test(e)&&(t=`${t}\\b`),t}class u{constructor(e,t){this.denseKeyProvider=e,this.getLanguageConfiguration=t,this.languageIdToBracketTokens=new Map}didLanguageChange(e){return this.languageIdToBracketTokens.has(e)}getSingleLanguageBracketTokens(e){let t=this.languageIdToBracketTokens.get(e);return t||(t=l.createFromLanguage(this.getLanguageConfiguration(e),this.denseKeyProvider),this.languageIdToBracketTokens.set(e,t)),t}}},81452:(e,t,n)=>{n.d(t,{o:()=>o});var i=n(21921),s=n(2371),r=n(25624);function o(e,t){if(0===e.length)return t;if(0===t.length)return e;const n=new i.H9(l(e)),o=l(t);o.push({modified:!1,lengthBefore:void 0,lengthAfter:void 0});let h=n.dequeue();function u(e){if(void 0===e){const e=n.takeWhile((e=>!0))||[];return h&&e.unshift(h),e}const t=[];while(h&&!(0,r.xd)(e)){const[i,s]=h.splitAt(e);t.push(i),e=(0,r.BE)(i.lengthAfter,e),h=null!==s&&void 0!==s?s:n.dequeue()}return(0,r.xd)(e)||t.push(new a(!1,e,e)),t}const c=[];function d(e,t,n){if(c.length>0&&(0,r.rM)(c[c.length-1].endOffset,e)){const e=c[c.length-1];c[c.length-1]=new s.Q(e.startOffset,t,(0,r.Ii)(e.newLength,n))}else c.push({startOffset:e,endOffset:t,newLength:n})}let g=r.xl;for(const i of o){const e=u(i.lengthBefore);if(i.modified){const t=(0,r.tQ)(e,(e=>e.lengthBefore)),n=(0,r.Ii)(g,t);d(g,n,i.lengthAfter),g=n}else for(const t of e){const e=g;g=(0,r.Ii)(g,t.lengthBefore),t.modified&&d(e,g,t.lengthAfter)}}return c}class a{constructor(e,t,n){this.modified=e,this.lengthBefore=t,this.lengthAfter=n}splitAt(e){const t=(0,r.BE)(e,this.lengthAfter);return(0,r.rM)(t,r.xl)?[this,void 0]:this.modified?[new a(this.modified,this.lengthBefore,e),new a(this.modified,r.xl,t)]:[new a(this.modified,e,e),new a(this.modified,t,t)]}toString(){return`${this.modified?"M":"U"}:${(0,r.Hw)(this.lengthBefore)} -> ${(0,r.Hw)(this.lengthAfter)}`}}function l(e){const t=[];let n=r.xl;for(const i of e){const e=(0,r.BE)(n,i.startOffset);(0,r.xd)(e)||t.push(new a(!1,e,e));const s=(0,r.BE)(i.startOffset,i.endOffset);t.push(new a(!0,s,i.newLength)),n=i.endOffset}return t}},25624:(e,t,n)=>{n.d(t,{BE:()=>k,By:()=>w,F_:()=>f,Hg:()=>c,Hw:()=>d,Ii:()=>m,PZ:()=>_,Qw:()=>x,Uv:()=>L,VR:()=>b,W9:()=>g,Zq:()=>v,av:()=>a,bP:()=>I,oR:()=>S,rM:()=>C,tQ:()=>p,xd:()=>h,xl:()=>l});var i=n(61720),s=n(89999),r=n(33162);class o{constructor(e,t){this.lineCount=e,this.columnCount=t}toLength(){return c(this.lineCount,this.columnCount)}toString(){return`${this.lineCount},${this.columnCount}`}}function a(e,t,n,i){return e!==n?c(n-e,i):c(0,i-t)}o.zero=new o(0,0);const l=0;function h(e){return 0===e}const u=Math.pow(2,26);function c(e,t){return e*u+t}function d(e){const t=e,n=Math.floor(t/u),i=t-n*u;return new o(n,i)}function g(e){return Math.floor(e/u)}function f(e){return e}function m(e,t){let n=e+t;return t>=u&&(n-=e%u),n}function p(e,t){return e.reduce(((e,n)=>m(e,t(n))),l)}function C(e,t){return e===t}function k(e,t){const n=e,i=t,s=i-n;if(s<=0)return l;const r=Math.floor(n/u),o=Math.floor(i/u),a=i-o*u;if(r===o){const e=n-r*u;return c(0,a-e)}return c(o-r,a)}function b(e,t){return e=t}function I(e){const t=e,n=Math.floor(t/u),i=t-n*u;return new s.L(n+1,i+1)}function _(e){return c(e.lineNumber-1,e.column-1)}function x(e,t){const n=e,i=Math.floor(n/u),s=n-i*u,o=t,a=Math.floor(o/u),l=o-a*u;return new r.e(i+1,s+1,a+1,l+1)}function L(e){return e.startLineNumber===e.endLineNumber?new o(0,e.endColumn-e.startColumn):new o(e.endLineNumber-e.startLineNumber,e.endColumn-1)}function S(e){const t=(0,i.uq)(e);return c(t.length-1,t[t.length-1].length)}},38219:(e,t,n)=>{n.d(t,{w:()=>p});var i=n(52454),s=n(2371),r=n(28068),o=n(25624);function a(e){if(0===e.length)return null;if(1===e.length)return e[0];let t=0;function n(){if(t>=e.length)return null;const n=t,i=e[n].listHeight;t++;while(t=2?l(0===n&&t===e.length?e:e.slice(n,t),!1):e[n]}let i=n(),s=n();if(!s)return i;for(let o=n();o;o=n())h(i,s)<=h(s,o)?(i=u(i,s),s=o):s=u(s,o);const r=u(i,s);return r}function l(e,t=!1){if(0===e.length)return null;if(1===e.length)return e[0];let n=e.length;while(n>3){const s=n>>1;for(let r=0;r=3?e[2]:null,t)}function h(e,t){return Math.abs(e.listHeight-t.listHeight)}function u(e,t){return e.listHeight===t.listHeight?i.Y0.create23(e,t,null,!1):e.listHeight>t.listHeight?c(e,t):d(t,e)}function c(e,t){e=e.toMutable();let n=e;const s=[];let r;while(1){if(t.listHeight===n.listHeight){r=t;break}if(4!==n.kind)throw new Error("unexpected");s.push(n),n=n.makeLastElementMutable()}for(let o=s.length-1;o>=0;o--){const e=s[o];r?e.childrenLength>=3?r=i.Y0.create23(e.unappendChild(),r,null,!1):(e.appendChildOfSameHeight(r),r=void 0):e.handleChildrenChanged()}return r?i.Y0.create23(e,r,null,!1):e}function d(e,t){e=e.toMutable();let n=e;const s=[];while(t.listHeight!==n.listHeight){if(4!==n.kind)throw new Error("unexpected");s.push(n),n=n.makeFirstElementMutable()}let r=t;for(let o=s.length-1;o>=0;o--){const e=s[o];r?e.childrenLength>=3?r=i.Y0.create23(r,e.unprependChild(),null,!1):(e.prependChildOfSameHeight(r),r=void 0):e.handleChildrenChanged()}return r?i.Y0.create23(r,e,null,!1):e}class g{constructor(e){this.lastOffset=o.xl,this.nextNodes=[e],this.offsets=[o.xl],this.idxs=[]}readLongestNodeAt(e,t){if((0,o.VR)(e,this.lastOffset))throw new Error("Invalid offset");this.lastOffset=e;while(1){const n=m(this.nextNodes);if(!n)return;const i=m(this.offsets);if((0,o.VR)(e,i))return;if((0,o.VR)(i,e))if((0,o.Ii)(i,n.length)<=e)this.nextNodeAfterCurrent();else{const e=f(n);-1!==e?(this.nextNodes.push(n.getChild(e)),this.offsets.push(i),this.idxs.push(e)):this.nextNodeAfterCurrent()}else{if(t(n))return this.nextNodeAfterCurrent(),n;{const e=f(n);if(-1===e)return void this.nextNodeAfterCurrent();this.nextNodes.push(n.getChild(e)),this.offsets.push(i),this.idxs.push(e)}}}}nextNodeAfterCurrent(){while(1){const e=m(this.offsets),t=m(this.nextNodes);if(this.nextNodes.pop(),this.offsets.pop(),0===this.idxs.length)break;const n=m(this.nextNodes),i=f(n,this.idxs[this.idxs.length-1]);if(-1!==i){this.nextNodes.push(n.getChild(i)),this.offsets.push((0,o.Ii)(e,t.length)),this.idxs[this.idxs.length-1]=i;break}this.idxs.pop()}}}function f(e,t=-1){while(1){if(t++,t>=e.childrenLength)return-1;if(e.getChild(t))return t}}function m(e){return e.length>0?e[e.length-1]:void 0}function p(e,t,n,i){const s=new C(e,t,n,i);return s.parseDocument()}class C{constructor(e,t,n,i){if(this.tokenizer=e,this.createImmutableLists=i,this._itemsConstructed=0,this._itemsFromCache=0,n&&i)throw new Error("Not supported");this.oldNodeReader=n?new g(n):void 0,this.positionMapper=new s.Y(t)}parseDocument(){this._itemsConstructed=0,this._itemsFromCache=0;let e=this.parseList(r.tS.getEmpty(),0);return e||(e=i.Y0.getEmpty()),e}parseList(e,t){const n=[];while(1){let i=this.tryReadChildFromCache(e);if(!i){const n=this.tokenizer.peek();if(!n||2===n.kind&&n.bracketIds.intersects(e))break;i=this.parseChild(e,t+1)}4===i.kind&&0===i.childrenLength||n.push(i)}const i=this.oldNodeReader?a(n):l(n,this.createImmutableLists);return i}tryReadChildFromCache(e){if(this.oldNodeReader){const t=this.positionMapper.getDistanceToNextChange(this.tokenizer.offset);if(null===t||!(0,o.xd)(t)){const n=this.oldNodeReader.readLongestNodeAt(this.positionMapper.getOffsetBeforeChange(this.tokenizer.offset),(n=>{if(null!==t&&!(0,o.VR)(n.length,t))return!1;const i=n.canBeReused(e);return i}));if(n)return this._itemsFromCache++,this.tokenizer.skip(n.length),n}}}parseChild(e,t){this._itemsConstructed++;const n=this.tokenizer.read();switch(n.kind){case 2:return new i.Dm(n.bracketIds,n.length);case 0:return n.astNode;case 1:{if(t>300)return new i.BH(n.length);const s=e.merge(n.bracketIds),r=this.parseList(s,t+1),o=this.tokenizer.peek();return o&&2===o.kind&&(o.bracketId===n.bracketId||o.bracketIds.intersects(n.bracketIds))?(this.tokenizer.read(),i.Kd.create(n.astNode,r,o.astNode)):i.Kd.create(n.astNode,r,null)}default:throw new Error("unexpected")}}}},28068:(e,t,n)=>{n.d(t,{FE:()=>o,Qw:()=>r,tS:()=>s});const i=[];class s{static create(e,t){if(e<=128&&0===t.length){let n=s.cache[e];return n||(n=new s(e,t),s.cache[e]=n),n}return new s(e,t)}static getEmpty(){return this.empty}constructor(e,t){this.items=e,this.additionalItems=t}add(e,t){const n=t.getKey(e);let i=n>>5;if(0===i){const e=1<{n.d(t,{WU:()=>l,g:()=>c,xH:()=>h});var i=n(98642),s=n(15578),r=n(52454),o=n(25624),a=n(28068);class l{constructor(e,t,n,i,s){this.length=e,this.kind=t,this.bracketId=n,this.bracketIds=i,this.astNode=s}}class h{constructor(e,t){this.textModel=e,this.bracketTokens=t,this.reader=new u(this.textModel,this.bracketTokens),this._offset=o.xl,this.didPeek=!1,this.peeked=null,this.textBufferLineCount=e.getLineCount(),this.textBufferLastLineLength=e.getLineLength(this.textBufferLineCount)}get offset(){return this._offset}get length(){return(0,o.Hg)(this.textBufferLineCount-1,this.textBufferLastLineLength)}skip(e){this.didPeek=!1,this._offset=(0,o.Ii)(this._offset,e);const t=(0,o.Hw)(this._offset);this.reader.setPosition(t.lineCount,t.columnCount)}read(){let e;return this.peeked?(this.didPeek=!1,e=this.peeked):e=this.reader.read(),e&&(this._offset=(0,o.Ii)(this._offset,e.length)),e}peek(){return this.didPeek||(this.peeked=this.reader.read(),this.didPeek=!0),this.peeked}}class u{constructor(e,t){this.textModel=e,this.bracketTokens=t,this.lineIdx=0,this.line=null,this.lineCharOffset=0,this.lineTokens=null,this.lineTokenOffset=0,this.peekedToken=null,this.textBufferLineCount=e.getLineCount(),this.textBufferLastLineLength=e.getLineLength(this.textBufferLineCount)}setPosition(e,t){e===this.lineIdx?(this.lineCharOffset=t,null!==this.line&&(this.lineTokenOffset=0===this.lineCharOffset?0:this.lineTokens.findTokenIndexAtOffset(this.lineCharOffset))):(this.lineIdx=e,this.lineCharOffset=t,this.line=null),this.peekedToken=null}read(){if(this.peekedToken){const e=this.peekedToken;return this.peekedToken=null,this.lineCharOffset+=(0,o.F_)(e.length),e}if(this.lineIdx>this.textBufferLineCount-1||this.lineIdx===this.textBufferLineCount-1&&this.lineCharOffset>=this.textBufferLastLineLength)return null;null===this.line&&(this.lineTokens=this.textModel.tokenization.getLineTokens(this.lineIdx+1),this.line=this.lineTokens.getLineContent(),this.lineTokenOffset=0===this.lineCharOffset?0:this.lineTokens.findTokenIndexAtOffset(this.lineCharOffset));const e=this.lineIdx,t=this.lineCharOffset;let n=0;while(1){const i=this.lineTokens,r=i.getCount();let a=null;if(this.lineTokenOffset1e3)break}if(n>1500)break}const i=(0,o.av)(e,t,this.lineIdx,this.lineCharOffset);return new l(i,0,-1,a.tS.getEmpty(),new r.BH(i))}}class c{constructor(e,t){this.text=e,this._offset=o.xl,this.idx=0;const n=t.getRegExpStr(),i=n?new RegExp(n+"|\n","gi"):null,s=[];let h,u=0,c=0,d=0,g=0;const f=[];for(let C=0;C<60;C++)f.push(new l((0,o.Hg)(0,C),0,-1,a.tS.getEmpty(),new r.BH((0,o.Hg)(0,C))));const m=[];for(let C=0;C<60;C++)m.push(new l((0,o.Hg)(1,C),0,-1,a.tS.getEmpty(),new r.BH((0,o.Hg)(1,C))));if(i){i.lastIndex=0;while(null!==(h=i.exec(e))){const e=h.index,n=h[0];if("\n"===n)u++,c=e+1;else{if(d!==e){let t;if(g===u){const n=e-d;if(n{n.d(t,{z:()=>l});var i=n(11271),s=n(70959),r=n(33162),o=n(27193),a=n(32656);class l extends s.JT{constructor(e){super(),this.textModel=e,this.colorProvider=new h,this.onDidChangeEmitter=new i.Q5,this.onDidChange=this.onDidChangeEmitter.event,this.colorizationOptions=e.getOptions().bracketPairColorizationOptions,this._register(e.bracketPairs.onDidChange((e=>{this.onDidChangeEmitter.fire()})))}handleDidChangeOptions(e){this.colorizationOptions=this.textModel.getOptions().bracketPairColorizationOptions}getDecorationsInRange(e,t,n,i){if(i)return[];if(void 0===t)return[];if(!this.colorizationOptions.enabled)return[];const s=this.textModel.bracketPairs.getBracketsInRange(e,!0).map((e=>({id:`bracket${e.range.toString()}-${e.nestingLevel}`,options:{description:"BracketPairColorization",inlineClassName:this.colorProvider.getInlineClassName(e,this.colorizationOptions.independentColorPoolPerBracketType)},ownerId:0,range:e.range}))).toArray();return s}getAllDecorations(e,t){return void 0===e?[]:this.colorizationOptions.enabled?this.getDecorationsInRange(new r.e(1,1,this.textModel.getLineCount(),1),e,t):[]}}class h{constructor(){this.unexpectedClosingBracketClassName="unexpected-closing-bracket"}getInlineClassName(e,t){return e.isInvalid?this.unexpectedClosingBracketClassName:this.getInlineClassNameOfLevel(t?e.nestingLevelOfEqualBracketType:e.nestingLevel)}getInlineClassNameOfLevel(e){return"bracket-highlighting-"+e%30}}(0,a.Ic)(((e,t)=>{const n=[o.zJ,o.Vs,o.CE,o.UP,o.r0,o.m1],i=new h;t.addRule(`.monaco-editor .${i.unexpectedClosingBracketClassName} { color: ${e.getColor(o.ts)}; }`);const s=n.map((t=>e.getColor(t))).filter((e=>!!e)).filter((e=>!e.isTransparent()));for(let r=0;r<30;r++){const e=s[r%s.length];t.addRule(`.monaco-editor .${i.getInlineClassNameOfLevel(r)} { color: ${e}; }`)}}))},98817:(e,t,n)=>{n.d(t,{r:()=>l});var i=n(18594),s=n(25624),r=n(38219),o=n(28068),a=n(754);function l(e,t){const n=new o.FE,l=new i.Z(n,(e=>t.getLanguageConfiguration(e))),u=new a.xH(new h([e]),l),c=(0,r.w)(u,[],void 0,!0);let d="";const g=e.getLineContent();function f(e,t){if(2===e.kind)if(f(e.openingBracket,t),t=(0,s.Ii)(t,e.openingBracket.length),e.child&&(f(e.child,t),t=(0,s.Ii)(t,e.child.length)),e.closingBracket)f(e.closingBracket,t),t=(0,s.Ii)(t,e.closingBracket.length);else{const t=l.getSingleLanguageBracketTokens(e.openingBracket.languageId),n=t.findClosingTokenText(e.openingBracket.bracketIds);d+=n}else if(3===e.kind);else if(0===e.kind||1===e.kind)d+=g.substring((0,s.F_)(t),(0,s.F_)((0,s.Ii)(t,e.length)));else if(4===e.kind)for(const n of e.children)f(n,t),t=(0,s.Ii)(t,n.length)}return f(c,s.xl),d}class h{constructor(e){this.lines=e,this.tokenization={getLineTokens:e=>this.lines[e-1]}}getLineCount(){return this.lines.length}getLineLength(e){return this.lines[e-1].getLineContent().length}}},22762:(e,t,n)=>{n.d(t,{NL:()=>p,e9:()=>m});var i=n(25206),s=n(98642),r=n(54644),o=n(95896),a=n(8485),l=n(80356),h=n(21230);function u(e){return e.toString()}class c{static create(e,t){const n=e.getAlternativeVersionId(),i=f(e);return new c(n,n,i,i,t,t,[])}constructor(e,t,n,i,s,r,o){this.beforeVersionId=e,this.afterVersionId=t,this.beforeEOL=n,this.afterEOL=i,this.beforeCursorState=s,this.afterCursorState=r,this.changes=o}append(e,t,n,i,s){t.length>0&&(this.changes=(0,a.b)(this.changes,t)),this.afterEOL=n,this.afterVersionId=i,this.afterCursorState=s}static _writeSelectionsSize(e){return 4+16*(e?e.length:0)}static _writeSelections(e,t,n){if(l.T4(e,t?t.length:0,n),n+=4,t)for(const i of t)l.T4(e,i.selectionStartLineNumber,n),n+=4,l.T4(e,i.selectionStartColumn,n),n+=4,l.T4(e,i.positionLineNumber,n),n+=4,l.T4(e,i.positionColumn,n),n+=4;return n}static _readSelections(e,t,n){const i=l.Ag(e,t);t+=4;for(let s=0;se.toString())).join(", ")}matchesResource(e){const t=o.o.isUri(this.model)?this.model:this.model.uri;return t.toString()===e.toString()}setModel(e){this.model=e}canAppend(e){return this.model===e&&this._data instanceof c}append(e,t,n,i,s){this._data instanceof c&&this._data.append(e,t,n,i,s)}close(){this._data instanceof c&&(this._data=this._data.serialize())}open(){this._data instanceof c||(this._data=c.deserialize(this._data))}undo(){if(o.o.isUri(this.model))throw new Error("Invalid SingleModelEditStackElement");this._data instanceof c&&(this._data=this._data.serialize());const e=c.deserialize(this._data);this.model._applyUndo(e.changes,e.beforeEOL,e.beforeVersionId,e.beforeCursorState)}redo(){if(o.o.isUri(this.model))throw new Error("Invalid SingleModelEditStackElement");this._data instanceof c&&(this._data=this._data.serialize());const e=c.deserialize(this._data);this.model._applyRedo(e.changes,e.afterEOL,e.afterVersionId,e.afterCursorState)}heapSize(){return this._data instanceof c&&(this._data=this._data.serialize()),this._data.byteLength+168}}class g{get resources(){return this._editStackElementsArr.map((e=>e.resource))}constructor(e,t,n){this.label=e,this.code=t,this.type=1,this._isOpen=!0,this._editStackElementsArr=n.slice(0),this._editStackElementsMap=new Map;for(const i of this._editStackElementsArr){const e=u(i.resource);this._editStackElementsMap.set(e,i)}this._delegate=null}prepareUndoRedo(){if(this._delegate)return this._delegate.prepareUndoRedo(this)}matchesResource(e){const t=u(e);return this._editStackElementsMap.has(t)}setModel(e){const t=u(o.o.isUri(e)?e:e.uri);this._editStackElementsMap.has(t)&&this._editStackElementsMap.get(t).setModel(e)}canAppend(e){if(!this._isOpen)return!1;const t=u(e.uri);if(this._editStackElementsMap.has(t)){const n=this._editStackElementsMap.get(t);return n.canAppend(e)}return!1}append(e,t,n,i,s){const r=u(e.uri),o=this._editStackElementsMap.get(r);o.append(e,t,n,i,s)}close(){this._isOpen=!1}open(){}undo(){this._isOpen=!1;for(const e of this._editStackElementsArr)e.undo()}redo(){for(const e of this._editStackElementsArr)e.redo()}heapSize(e){const t=u(e);if(this._editStackElementsMap.has(t)){const e=this._editStackElementsMap.get(t);return e.heapSize()}return 0}split(){return this._editStackElementsArr}toString(){const e=[];for(const t of this._editStackElementsArr)e.push(`${(0,h.EZ)(t.resource)}: ${t}`);return`{${e.join(", ")}}`}}function f(e){const t=e.getEOL();return"\n"===t?0:1}function m(e){return!!e&&(e instanceof d||e instanceof g)}class p{constructor(e,t){this._model=e,this._undoRedoService=t}pushStackElement(){const e=this._undoRedoService.getLastElement(this._model.uri);m(e)&&e.close()}popStackElement(){const e=this._undoRedoService.getLastElement(this._model.uri);m(e)&&e.open()}clear(){this._undoRedoService.removeElements(this._model.uri)}_getOrCreateEditStackElement(e,t){const n=this._undoRedoService.getLastElement(this._model.uri);if(m(n)&&n.canAppend(this._model))return n;const s=new d(i.NC("edit","Typing"),"undoredo.textBufferEdit",this._model,e);return this._undoRedoService.pushElement(s,t),s}pushEOL(e){const t=this._getOrCreateEditStackElement(null,void 0);this._model.setEOL(e),t.append(this._model,[],f(this._model),this._model.getAlternativeVersionId(),null)}pushEditOperation(e,t,n,i){const s=this._getOrCreateEditStackElement(e,i),r=this._model.applyEdits(t,!0),o=p._computeCursorState(n,r),a=r.map(((e,t)=>({index:t,textChange:e.textChange})));return a.sort(((e,t)=>e.textChange.oldPosition===t.textChange.oldPosition?e.index-t.index:e.textChange.oldPosition-t.textChange.oldPosition)),s.append(this._model,a.map((e=>e.textChange)),f(this._model),this._model.getAlternativeVersionId(),o),o}static _computeCursorState(e,t){try{return e?e(t):null}catch(n){return(0,s.dL)(n),null}}}},61833:(e,t,n)=>{n.d(t,{v:()=>s});var i=n(21921);class s{constructor(e){this._default=e,this._store=[]}get(e){return e=this._store.length)this._store[this._store.length]=this._default;this._store[e]=t}replace(e,t,n){if(e>=this._store.length)return;if(0===t)return void this.insert(e,n);if(0===n)return void this.delete(e,t);const i=this._store.slice(0,e),s=this._store.slice(e+t),o=r(n,this._default);this._store=i.concat(o,s)}delete(e,t){0===t||e>=this._store.length||this._store.splice(e,t)}insert(e,t){if(0===t||e>=this._store.length)return;const n=[];for(let i=0;i{n.d(t,{W:()=>d,l:()=>c});var i=n(21921),s=n(61720),r=n(16779),o=n(33162),a=n(202),l=n(83787),h=n(37969),u=n(98642);class c extends a.U{constructor(e,t){super(),this.textModel=e,this.languageConfigurationService=t}getLanguageConfiguration(e){return this.languageConfigurationService.getLanguageConfiguration(e)}_computeIndentLevel(e){return(0,l.q)(this.textModel.getLineContent(e+1),this.textModel.getOptions().tabSize)}getActiveIndentGuide(e,t,n){this.assertNotDisposed();const i=this.textModel.getLineCount();if(e<1||e>i)throw new u.he("Illegal value for lineNumber");const s=this.getLanguageConfiguration(this.textModel.getLanguageId()).foldingRules,r=Boolean(s&&s.offSide);let o=-2,a=-1,l=-2,h=-1;const c=e=>{if(-1!==o&&(-2===o||o>e-1)){o=-1,a=-1;for(let t=e-2;t>=0;t--){const e=this._computeIndentLevel(t);if(e>=0){o=t,a=e;break}}}if(-2===l){l=-1,h=-1;for(let t=e;t=0){l=t,h=e;break}}}};let d=-2,g=-1,f=-2,m=-1;const p=e=>{if(-2===d){d=-1,g=-1;for(let t=e-2;t>=0;t--){const e=this._computeIndentLevel(t);if(e>=0){d=t,g=e;break}}}if(-1!==f&&(-2===f||f=0){f=t,m=e;break}}}};let C=0,k=!0,b=0,w=!0,v=0,I=0;for(let u=0;k||w;u++){const s=e-u,o=e+u;u>1&&(s<1||s1&&(o>i||o>n)&&(w=!1),u>5e4&&(k=!1,w=!1);let f=-1;if(k&&s>=1){const e=this._computeIndentLevel(s-1);e>=0?(l=s-1,h=e,f=Math.ceil(e/this.textModel.getOptions().indentSize)):(c(s),f=this._getIndentLevelForWhitespaceLine(r,a,h))}let _=-1;if(w&&o<=i){const e=this._computeIndentLevel(o-1);e>=0?(d=o-1,g=e,_=Math.ceil(e/this.textModel.getOptions().indentSize)):(p(o),_=this._getIndentLevelForWhitespaceLine(r,g,m))}if(0!==u){if(1===u){if(o<=i&&_>=0&&I+1===_){k=!1,C=o,b=o,v=_;continue}if(s>=1&&f>=0&&f-1===I){w=!1,C=s,b=s,v=f;continue}if(C=e,b=e,v=I,0===v)return{startLineNumber:C,endLineNumber:b,indent:v}}k&&(f>=v?C=s:k=!1),w&&(_>=v?b=o:w=!1)}else I=f}return{startLineNumber:C,endLineNumber:b,indent:v}}getLinesBracketGuides(e,t,n,r){var a;const l=[];for(let i=e;i<=t;i++)l.push([]);const u=!0,c=this.textModel.bracketPairs.getBracketPairsInRangeWithMinIndentation(new o.e(e,1,t,this.textModel.getLineMaxColumn(t))).toArray();let g;if(n&&c.length>0){const s=(e<=n.lineNumber&&n.lineNumber<=t?c:this.textModel.bracketPairs.getBracketPairsInRange(o.e.fromPositions(n)).toArray()).filter((e=>o.e.strictContainsPosition(e.range,n)));g=null===(a=(0,i.dF)(s,(e=>u||e.range.startLineNumber!==e.range.endLineNumber)))||void 0===a?void 0:a.range}const f=this.textModel.getOptions().bracketPairColorizationOptions.independentColorPoolPerBracketType,m=new d;for(const i of c){if(!i.closingBracketRange)continue;const n=g&&i.range.equalsRange(g);if(!n&&!r.includeInactive)continue;const o=m.getInlineClassName(i.nestingLevel,i.nestingLevelOfEqualBracketType,f)+(r.highlightActive&&n?" "+m.activeClassName:""),a=i.openingBracketRange.getStartPosition(),c=i.closingBracketRange.getStartPosition(),d=r.horizontalGuides===h.s6.Enabled||r.horizontalGuides===h.s6.EnabledForActive&&n;if(i.range.startLineNumber===i.range.endLineNumber){u&&d&&l[i.range.startLineNumber-e].push(new h.UO(-1,i.openingBracketRange.getEndPosition().column,o,new h.vW(!1,c.column),-1,-1));continue}const p=this.getVisibleColumnFromPosition(c),C=this.getVisibleColumnFromPosition(i.openingBracketRange.getStartPosition()),k=Math.min(C,p,i.minVisibleColumnIndentation+1);let b=!1;const w=s.LC(this.textModel.getLineContent(i.closingBracketRange.startLineNumber)),v=w=e&&C>k&&l[a.lineNumber-e].push(new h.UO(k,-1,o,new h.vW(!1,a.column),-1,-1)),c.lineNumber<=t&&p>k&&l[c.lineNumber-e].push(new h.UO(k,-1,o,new h.vW(!b,c.column),-1,-1)))}for(const i of l)i.sort(((e,t)=>e.visibleColumn-t.visibleColumn));return l}getVisibleColumnFromPosition(e){return r.i.visibleColumnFromColumn(this.textModel.getLineContent(e.lineNumber),e.column,this.textModel.getOptions().tabSize)+1}getLinesIndentGuides(e,t){this.assertNotDisposed();const n=this.textModel.getLineCount();if(e<1||e>n)throw new Error("Illegal value for startLineNumber");if(t<1||t>n)throw new Error("Illegal value for endLineNumber");const i=this.textModel.getOptions(),s=this.getLanguageConfiguration(this.textModel.getLanguageId()).foldingRules,r=Boolean(s&&s.offSide),o=new Array(t-e+1);let a=-2,l=-1,h=-2,u=-1;for(let c=e;c<=t;c++){const t=c-e,s=this._computeIndentLevel(c-1);if(s>=0)a=c-1,l=s,o[t]=Math.ceil(s/i.indentSize);else{if(-2===a){a=-1,l=-1;for(let e=c-2;e>=0;e--){const t=this._computeIndentLevel(e);if(t>=0){a=e,l=t;break}}}if(-1!==h&&(-2===h||h=0){h=e,u=t;break}}}o[t]=this._getIndentLevelForWhitespaceLine(r,l,u)}}return o}_getIndentLevelForWhitespaceLine(e,t,n){const i=this.textModel.getOptions();return-1===t||-1===n?0:t{n.d(t,{L:()=>r});class i{constructor(){this.spacesDiff=0,this.looksLikeAlignment=!1}}function s(e,t,n,i,s){let r;for(s.spacesDiff=0,s.looksLikeAlignment=!1,r=0;r0&&a>0)return;if(l>0&&h>0)return;const u=Math.abs(a-h),c=Math.abs(o-l);if(0===u)return s.spacesDiff=c,void(c>0&&0<=l-1&&l-10?o++:C>1&&a++,s(l,h,u,p,g),g.looksLikeAlignment&&(!n||t!==g.spacesDiff))continue;const b=g.spacesDiff;b<=c&&d[b]++,l=u,h=p}let f=n;o!==a&&(f=o{const n=d[t];n>e&&(e=n,m=t)})),4===m&&d[4]>0&&d[2]>0&&d[2]>=d[4]/2&&(m=2)}return{insertSpaces:f,tabSize:m}}},26828:(e,t,n)=>{function i(e){return(1&e.metadata)>>>0}function s(e,t){e.metadata=254&e.metadata|t<<0}function r(e){return(2&e.metadata)>>>1===1}function o(e,t){e.metadata=253&e.metadata|(t?1:0)<<1}function a(e){return(4&e.metadata)>>>2===1}function l(e,t){e.metadata=251&e.metadata|(t?1:0)<<2}function h(e){return(64&e.metadata)>>>6===1}function u(e,t){e.metadata=191&e.metadata|(t?1:0)<<6}function c(e){return(24&e.metadata)>>>3}function d(e,t){e.metadata=231&e.metadata|t<<3}function g(e){return(32&e.metadata)>>>5===1}function f(e,t){e.metadata=223&e.metadata|(t?1:0)<<5}n.d(t,{IF:()=>C,fL:()=>m,sR:()=>M});class m{constructor(e,t,n){this.metadata=0,this.parent=this,this.left=this,this.right=this,s(this,1),this.start=t,this.end=n,this.delta=0,this.maxEnd=n,this.id=e,this.ownerId=0,this.options=null,l(this,!1),u(this,!1),d(this,1),f(this,!1),this.cachedVersionId=0,this.cachedAbsoluteStart=t,this.cachedAbsoluteEnd=n,this.range=null,o(this,!1)}reset(e,t,n,i){this.start=t,this.end=n,this.maxEnd=n,this.cachedVersionId=e,this.cachedAbsoluteStart=t,this.cachedAbsoluteEnd=n,this.range=i}setOptions(e){this.options=e;const t=this.options.className;l(this,"squiggly-error"===t||"squiggly-warning"===t||"squiggly-info"===t),u(this,null!==this.options.glyphMarginClassName),d(this,this.options.stickiness),f(this,this.options.collapseOnReplaceEdit)}setCachedOffsets(e,t,n){this.cachedVersionId!==n&&(this.range=null),this.cachedVersionId=n,this.cachedAbsoluteStart=e,this.cachedAbsoluteEnd=t}detach(){this.parent=null,this.left=null,this.right=null}}const p=new m(null,0,0);p.parent=p,p.left=p,p.right=p,s(p,0);class C{constructor(){this.root=p,this.requestNormalizeDelta=!1}intervalSearch(e,t,n,i,s,r){return this.root===p?[]:S(this,e,t,n,i,s,r)}search(e,t,n,i){return this.root===p?[]:L(this,e,t,n,i)}collectNodesFromOwner(e){return _(this,e)}collectNodesPostOrder(){return x(this)}insert(e){E(this,e),this._normalizeDeltaIfNecessary()}delete(e){y(this,e),this._normalizeDeltaIfNecessary()}resolveNode(e,t){const n=e;let i=0;while(e!==this.root)e===e.parent.right&&(i+=e.parent.delta),e=e.parent;const s=n.start+i,r=n.end+i;n.setCachedOffsets(s,r,t)}acceptReplace(e,t,n,i){const s=v(this,e,e+t);for(let r=0,o=s.length;rn)&&(1!==i&&(2===i||t))}function w(e,t,n,i,s){const r=c(e),o=0===r||2===r,a=1===r||2===r,l=n-t,h=i,u=Math.min(l,h),d=e.start;let f=!1;const m=e.end;let p=!1;t<=d&&m<=n&&g(e)&&(e.start=t,f=!0,e.end=t,p=!0);{const e=s?1:l>0?2:0;!f&&b(d,o,t,e)&&(f=!0),!p&&b(m,a,t,e)&&(p=!0)}if(u>0&&!s){const e=l>h?2:0;!f&&b(d,o,t+u,e)&&(f=!0),!p&&b(m,a,t+u,e)&&(p=!0)}{const i=s?1:0;!f&&b(d,o,n,i)&&(e.start=t+h,f=!0),!p&&b(m,a,n,i)&&(e.end=t+h,p=!0)}const C=h-l;f||(e.start=Math.max(0,d+C)),p||(e.end=Math.max(0,m+C)),e.start>e.end&&(e.end=e.start)}function v(e,t,n){let i=e.root,s=0,a=0,l=0,h=0;const u=[];let c=0;while(i!==p)if(r(i))o(i.left,!1),o(i.right,!1),i===i.parent.right&&(s-=i.parent.delta),i=i.parent;else{if(!r(i.left)){if(a=s+i.maxEnd,an?o(i,!0):(h=s+i.end,h>=t&&(i.setCachedOffsets(l,h,0),u[c++]=i),o(i,!0),i.right===p||r(i.right)||(s+=i.delta,i=i.right))}return o(e.root,!1),u}function I(e,t,n,i){let s=e.root,a=0,l=0,h=0;const u=i-(n-t);while(s!==p)if(r(s))o(s.left,!1),o(s.right,!1),s===s.parent.right&&(a-=s.parent.delta),M(s),s=s.parent;else{if(!r(s.left)){if(l=a+s.maxEnd,ln?(s.start+=u,s.end+=u,s.delta+=u,(s.delta<-1073741824||s.delta>1073741824)&&(e.requestNormalizeDelta=!0),o(s,!0)):(o(s,!0),s.right===p||r(s.right)||(a+=s.delta,s=s.right))}o(e.root,!1)}function _(e,t){let n=e.root;const i=[];let s=0;while(n!==p)r(n)?(o(n.left,!1),o(n.right,!1),n=n.parent):n.left===p||r(n.left)?(n.ownerId===t&&(i[s++]=n),o(n,!0),n.right===p||r(n.right)||(n=n.right)):n=n.left;return o(e.root,!1),i}function x(e){let t=e.root;const n=[];let i=0;while(t!==p)r(t)?(o(t.left,!1),o(t.right,!1),t=t.parent):t.left===p||r(t.left)?t.right===p||r(t.right)?(n[i++]=t,o(t,!0)):t=t.right:t=t.left;return o(e.root,!1),n}function L(e,t,n,i,s){let l=e.root,u=0,c=0,d=0;const g=[];let f=0;while(l!==p){if(r(l)){o(l.left,!1),o(l.right,!1),l===l.parent.right&&(u-=l.parent.delta),l=l.parent;continue}if(l.left!==p&&!r(l.left)){l=l.left;continue}c=u+l.start,d=u+l.end,l.setCachedOffsets(c,d,i);let e=!0;t&&l.ownerId&&l.ownerId!==t&&(e=!1),n&&a(l)&&(e=!1),s&&!h(l)&&(e=!1),e&&(g[f++]=l),o(l,!0),l.right===p||r(l.right)||(u+=l.delta,l=l.right)}return o(e.root,!1),g}function S(e,t,n,i,s,l,u){let c=e.root,d=0,g=0,f=0,m=0;const C=[];let k=0;while(c!==p)if(r(c))o(c.left,!1),o(c.right,!1),c===c.parent.right&&(d-=c.parent.delta),c=c.parent;else{if(!r(c.left)){if(g=d+c.maxEnd,gn)o(c,!0);else{if(m=d+c.end,m>=t){c.setCachedOffsets(f,m,l);let e=!0;i&&c.ownerId&&c.ownerId!==i&&(e=!1),s&&a(c)&&(e=!1),u&&!h(c)&&(e=!1),e&&(C[k++]=c)}o(c,!0),c.right===p||r(c.right)||(d+=c.delta,c=c.right)}}return o(e.root,!1),C}function E(e,t){if(e.root===p)return t.parent=p,t.left=p,t.right=p,s(t,0),e.root=t,e.root;R(e,t),A(t.parent);let n=t;while(n!==e.root&&1===i(n.parent))if(n.parent===n.parent.parent.left){const t=n.parent.parent.right;1===i(t)?(s(n.parent,0),s(t,0),s(n.parent.parent,1),n=n.parent.parent):(n===n.parent.right&&(n=n.parent,T(e,n)),s(n.parent,0),s(n.parent.parent,1),B(e,n.parent.parent))}else{const t=n.parent.parent.left;1===i(t)?(s(n.parent,0),s(t,0),s(n.parent.parent,1),n=n.parent.parent):(n===n.parent.left&&(n=n.parent,B(e,n)),s(n.parent,0),s(n.parent.parent,1),T(e,n.parent.parent))}return s(e.root,0),t}function R(e,t){let n=0,i=e.root;const r=t.start,o=t.end;while(1){const e=D(r,o,i.start+n,i.end+n);if(e<0){if(i.left===p){t.start-=n,t.end-=n,t.maxEnd-=n,i.left=t;break}i=i.left}else{if(i.right===p){t.start-=n+i.delta,t.end-=n+i.delta,t.maxEnd-=n+i.delta,i.right=t;break}n+=i.delta,i=i.right}}t.parent=i,t.left=p,t.right=p,s(t,1)}function y(e,t){let n,r;if(t.left===p?(n=t.right,r=t,n.delta+=t.delta,(n.delta<-1073741824||n.delta>1073741824)&&(e.requestNormalizeDelta=!0),n.start+=t.delta,n.end+=t.delta):t.right===p?(n=t.left,r=t):(r=N(t.right),n=r.right,n.start+=r.delta,n.end+=r.delta,n.delta+=r.delta,(n.delta<-1073741824||n.delta>1073741824)&&(e.requestNormalizeDelta=!0),r.start+=t.delta,r.end+=t.delta,r.delta=t.delta,(r.delta<-1073741824||r.delta>1073741824)&&(e.requestNormalizeDelta=!0)),r===e.root)return e.root=n,s(n,0),t.detach(),O(),M(n),void(e.root.parent=p);const o=1===i(r);if(r===r.parent.left?r.parent.left=n:r.parent.right=n,r===t?n.parent=r.parent:(r.parent===t?n.parent=r:n.parent=r.parent,r.left=t.left,r.right=t.right,r.parent=t.parent,s(r,i(t)),t===e.root?e.root=r:t===t.parent.left?t.parent.left=r:t.parent.right=r,r.left!==p&&(r.left.parent=r),r.right!==p&&(r.right.parent=r)),t.detach(),o)return A(n.parent),r!==t&&(A(r),A(r.parent)),void O();let a;A(n),A(n.parent),r!==t&&(A(r),A(r.parent));while(n!==e.root&&0===i(n))n===n.parent.left?(a=n.parent.right,1===i(a)&&(s(a,0),s(n.parent,1),T(e,n.parent),a=n.parent.right),0===i(a.left)&&0===i(a.right)?(s(a,1),n=n.parent):(0===i(a.right)&&(s(a.left,0),s(a,1),B(e,a),a=n.parent.right),s(a,i(n.parent)),s(n.parent,0),s(a.right,0),T(e,n.parent),n=e.root)):(a=n.parent.left,1===i(a)&&(s(a,0),s(n.parent,1),B(e,n.parent),a=n.parent.left),0===i(a.left)&&0===i(a.right)?(s(a,1),n=n.parent):(0===i(a.left)&&(s(a.right,0),s(a,1),T(e,a),a=n.parent.left),s(a,i(n.parent)),s(n.parent,0),s(a.left,0),B(e,n.parent),n=e.root));s(n,0),O()}function N(e){while(e.left!==p)e=e.left;return e}function O(){p.parent=p,p.delta=0,p.start=0,p.end=0}function T(e,t){const n=t.right;n.delta+=t.delta,(n.delta<-1073741824||n.delta>1073741824)&&(e.requestNormalizeDelta=!0),n.start+=t.delta,n.end+=t.delta,t.right=n.left,n.left!==p&&(n.left.parent=t),n.parent=t.parent,t.parent===p?e.root=n:t===t.parent.left?t.parent.left=n:t.parent.right=n,n.left=t,t.parent=n,M(t),M(n)}function B(e,t){const n=t.left;t.delta-=n.delta,(t.delta<-1073741824||t.delta>1073741824)&&(e.requestNormalizeDelta=!0),t.start-=n.delta,t.end-=n.delta,t.left=n.right,n.right!==p&&(n.right.parent=t),n.parent=t.parent,t.parent===p?e.root=n:t===t.parent.right?t.parent.right=n:t.parent.left=n,n.right=t,t.parent=n,M(t),M(n)}function P(e){let t=e.end;if(e.left!==p){const n=e.left.maxEnd;n>t&&(t=n)}if(e.right!==p){const n=e.right.maxEnd+e.delta;n>t&&(t=n)}return t}function M(e){e.maxEnd=P(e)}function A(e){while(e!==p){const t=P(e);if(e.maxEnd===t)return;e.maxEnd=t,e=e.parent}}function D(e,t,n,i){return e===n?t-i:e-n}}}]); \ No newline at end of file diff --git a/dist/js/265.da783e80.js b/dist/js/265.da783e80.js new file mode 100644 index 00000000..894b4b1d --- /dev/null +++ b/dist/js/265.da783e80.js @@ -0,0 +1 @@ +"use strict";(globalThis["webpackChunkfrontend"]=globalThis["webpackChunkfrontend"]||[]).push([[265],{87707:(e,t,n)=>{n.d(t,{Z:()=>r});var a=n(59835),o=n(60499),l=n(73512);const i=(0,a.aZ)({__name:"ConfigFileEditor",props:{modelValue:{},language:{},theme:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=(0,o.iH)(),i=e,u=t;let c;return(0,a.bv)((()=>{c=l.editor.create(n.value,{value:i.modelValue,language:i.language,theme:i.theme,fontFamily:"Roboto Mono"}),c.onDidChangeModelContent((()=>{const e=c.getValue();u("update:modelValue",e)}))})),(0,a.YP)((()=>i.theme),(e=>c.updateOptions({theme:e}))),(0,a.YP)((()=>i.modelValue),(e=>c.setValue(e))),(e,t)=>((0,a.wg)(),(0,a.iD)("div",{ref_key:"dom",ref:n,class:"editor"},null,512))}});var u=n(11639);const c=(0,u.Z)(i,[["__scopeId","data-v-f81849bc"]]),r=c},86867:(e,t,n)=>{n.r(t),n.d(t,{default:()=>k});var a=n(59835),o=n(60499),l=n(19302),i=n(87707),u=n(34136),c=function(e,t,n,a){function o(e){return e instanceof n?e:new n((function(t){t(e)}))}return new(n||(n=Promise))((function(n,l){function i(e){try{c(a.next(e))}catch(t){l(t)}}function u(e){try{c(a["throw"](e))}catch(t){l(t)}}function c(e){e.done?n(e.value):o(e.value).then(i,u)}c((a=a.apply(e,t||[])).next())}))};const r=(0,a._)("div",{class:"text-h5"},"编辑配置文件",-1),s=(0,a.aZ)({__name:"AccountConfigEditorView",props:{uin:{}},setup(e){const t=(0,l.Z)(),n=e,s=(0,o.iH)(),d=(0,o.iH)(!0);function f(){return c(this,void 0,void 0,(function*(){try{d.value=!0;const{data:e}=yield u.api.accountConfigReadApiUinConfigGet(n.uin);s.value=e.content}catch(e){s.value=void 0}finally{d.value=!1}}))}function v(){return c(this,void 0,void 0,(function*(){if(s.value)try{d.value=!0;const{data:e}=yield u.api.accountConfigWriteApiUinConfigPatch(n.uin,{content:s.value});s.value=e.content,t.notify({message:"配置文件修改成功",color:"positive"})}catch(e){t.notify({message:"配置文件修改失败",color:"negative"})}finally{d.value=!1}}))}function m(){return c(this,void 0,void 0,(function*(){try{d.value=!0,yield u.api.accountConfigDeleteApiUinConfigDelete(n.uin),yield f(),t.notify({message:"配置文件删除成功",color:"positive"})}catch(e){t.notify({message:"配置文件删除失败",color:"negative"})}finally{d.value=!1}}))}return(0,a.bv)(f),(e,n)=>{const l=(0,a.up)("q-btn"),u=(0,a.up)("q-card-section"),c=(0,a.up)("q-separator"),g=(0,a.up)("q-card-actions"),p=(0,a.up)("q-inner-loading"),h=(0,a.up)("q-card"),y=(0,a.up)("q-page");return(0,a.wg)(),(0,a.j4)(y,{class:"row q-pa-md justify-center"},{default:(0,a.w5)((()=>[(0,a.Wm)(h,{class:"shadow col-12",style:{height:"calc(100vh - 5rem)"}},{default:(0,a.w5)((()=>[(0,a.Wm)(u,{class:"row justify-start items-center"},{default:(0,a.w5)((()=>[(0,a.Wm)(l,{onClick:e.$router.back,flat:"",label:"返回",color:"grey",icon:"arrow_back"},null,8,["onClick"]),r])),_:1}),(0,a.Wm)(c),(0,a.Wm)(g,{class:"q-gutter-md q-mx-md"},{default:(0,a.w5)((()=>[(0,a.Wm)(l,{flat:"",onClick:v,color:"primary",label:"提交修改",icon:"save"}),(0,a.Wm)(l,{flat:"",onClick:f,color:"secondary",label:"重新加载配置文件",icon:"refresh"}),(0,a.Wm)(l,{flat:"",onClick:m,color:"negative",label:"删除并重新生成配置文件",icon:"delete"})])),_:1}),(0,a.Wm)(u,null,{default:(0,a.w5)((()=>["undefined"!==typeof s.value?((0,a.wg)(),(0,a.j4)(i.Z,{key:0,modelValue:s.value,"onUpdate:modelValue":n[0]||(n[0]=e=>s.value=e),language:"yaml",style:{height:"70vh"},theme:(0,o.SU)(t).dark.isActive?"vs-dark":"vs"},null,8,["modelValue","theme"])):(0,a.kq)("",!0),(0,a.Wm)(p,{showing:d.value},null,8,["showing"])])),_:1})])),_:1})])),_:1})}}});var d=n(69885),f=n(44458),v=n(63190),m=n(68879),g=n(50926),p=n(11821),h=n(60854),y=n(69984),w=n.n(y);const C=s,k=C;w()(s,"components",{QPage:d.Z,QCard:f.Z,QCardSection:v.Z,QBtn:m.Z,QSeparator:g.Z,QCardActions:p.Z,QInnerLoading:h.Z})}}]); \ No newline at end of file diff --git a/dist/js/291.7e5d13e6.js b/dist/js/291.7e5d13e6.js new file mode 100644 index 00000000..90d990b5 --- /dev/null +++ b/dist/js/291.7e5d13e6.js @@ -0,0 +1 @@ +"use strict";(globalThis["webpackChunkfrontend"]=globalThis["webpackChunkfrontend"]||[]).push([[291],{60858:(e,t,n)=>{n.d(t,{Z:()=>d});n(72879);var o=n(57674),r=n(91384),a=n(61705),i=n(47506);function l(e){return!0===e.ios?"ios":!0===e.android?"android":void 0}function s({is:e,has:t,within:n},o){const r=[!0===e.desktop?"desktop":"mobile",(!1===t.touch?"no-":"")+"touch"];if(!0===e.mobile){const t=l(e);void 0!==t&&r.push("platform-"+t)}if(!0===e.nativeMobile){const t=e.nativeMobileWrapper;r.push(t),r.push("native-mobile"),!0!==e.ios||void 0!==o[t]&&!1===o[t].iosStatusBarPadding||r.push("q-ios-padding")}else!0===e.electron?r.push("electron"):!0===e.bex&&r.push("bex");return!0===n.iframe&&r.push("within-iframe"),r}function u(){const{is:e}=i.client,t=document.body.className,n=new Set(t.replace(/ {2}/g," ").split(" "));if(void 0!==i.aG)n.delete("desktop"),n.add("platform-ios"),n.add("mobile");else if(!0!==e.nativeMobile&&!0!==e.electron&&!0!==e.bex)if(!0===e.desktop)n.delete("mobile"),n.delete("platform-ios"),n.delete("platform-android"),n.add("desktop");else if(!0===e.mobile){n.delete("desktop"),n.add("mobile");const t=l(e);void 0!==t?(n.add(`platform-${t}`),n.delete("platform-"+("ios"===t?"android":"ios"))):(n.delete("platform-ios"),n.delete("platform-android"))}!0===i.client.has.touch&&(n.delete("no-touch"),n.add("touch")),!0===i.client.within.iframe&&n.add("within-iframe");const o=Array.from(n).join(" ");t!==o&&(document.body.className=o)}function c(e){for(const t in e)(0,o.Z)(t,e[t])}const d={install(e){if(!0!==this.__installed){if(!0===i.uX.value)u();else{const{$q:t}=e;void 0!==t.config.brand&&c(t.config.brand);const n=s(i.client,t.config);document.body.classList.add.apply(document.body.classList,n)}!0===i.client.is.ios&&document.body.addEventListener("touchstart",r.ZT),window.addEventListener("keydown",a.ZK,!0)}}}},21602:(e,t,n)=>{n.d(t,{Z:()=>m});n(72879);var o=n(59835),r=n(60499),a=n(65987),i=n(30321);const l=XMLHttpRequest,s=l.prototype.open,u=["top","right","bottom","left"];let c=[],d=0;function f({p:e,pos:t,active:n,horiz:o,reverse:r,dir:a}){let i=1,l=1;return!0===o?(!0===r&&(i=-1),"bottom"===t&&(l=-1),{transform:`translate3d(${i*(e-100)}%,${n?0:-200*l}%,0)`}):(!0===r&&(l=-1),"right"===t&&(i=-1),{transform:`translate3d(${n?0:a*i*-200}%,${l*(e-100)}%,0)`})}function p(e,t){return"number"!==typeof t&&(t=e<25?3*Math.random()+3:e<65?3*Math.random():e<85?2*Math.random():e<99?.6:0),(0,i.vX)(e+t,0,100)}function v(e){d++,c.push(e),d>1||(l.prototype.open=function(e,t){const n=[],o=()=>{c.forEach((e=>{null!==e.hijackFilter.value&&!0!==e.hijackFilter.value(t)||(e.start(),n.push(e.stop))}))},r=()=>{n.forEach((e=>{e()}))};this.addEventListener("loadstart",o,{once:!0}),this.addEventListener("loadend",r,{once:!0}),s.apply(this,arguments)})}function h(e){c=c.filter((t=>t.start!==e)),d=Math.max(0,d-1),0===d&&(l.prototype.open=s)}const m=(0,a.L)({name:"QAjaxBar",props:{position:{type:String,default:"top",validator:e=>u.includes(e)},size:{type:String,default:"2px"},color:String,skipHijack:Boolean,reverse:Boolean,hijackFilter:Function},emits:["start","stop"],setup(e,{emit:t}){const{proxy:n}=(0,o.FN)(),a=(0,r.iH)(0),i=(0,r.iH)(!1),l=(0,r.iH)(!0);let s,u=0,c=null;const d=(0,o.Fl)((()=>`q-loading-bar q-loading-bar--${e.position}`+(void 0!==e.color?` bg-${e.color}`:"")+(!0===l.value?"":" no-transition"))),m=(0,o.Fl)((()=>"top"===e.position||"bottom"===e.position)),g=(0,o.Fl)((()=>!0===m.value?"height":"width")),y=(0,o.Fl)((()=>{const t=i.value,o=f({p:a.value,pos:e.position,active:t,horiz:m.value,reverse:!0===n.$q.lang.rtl&&["top","bottom"].includes(e.position)?!1===e.reverse:e.reverse,dir:!0===n.$q.lang.rtl?-1:1});return o[g.value]=e.size,o.opacity=t?1:0,o})),b=(0,o.Fl)((()=>!0===i.value?{role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":a.value}:{"aria-hidden":"true"}));function w(e=300){const n=s;return s=Math.max(0,e)||0,u++,u>1?(0===n&&e>0?S():null!==c&&n>0&&e<=0&&(clearTimeout(c),c=null),u):(null!==c&&clearTimeout(c),t("start"),a.value=0,c=setTimeout((()=>{c=null,l.value=!0,e>0&&S()}),!0===i.value?500:1),!0!==i.value&&(i.value=!0,l.value=!1),u)}function _(e){return u>0&&(a.value=p(a.value,e)),u}function x(){if(u=Math.max(0,u-1),u>0)return u;null!==c&&(clearTimeout(c),c=null),t("stop");const e=()=>{l.value=!0,a.value=100,c=setTimeout((()=>{c=null,i.value=!1}),1e3)};return 0===a.value?c=setTimeout(e,1):e(),u}function S(){a.value<100&&(c=setTimeout((()=>{c=null,_(),S()}),s))}let k;return(0,o.bv)((()=>{!0!==e.skipHijack&&(k=!0,v({start:w,stop:x,hijackFilter:(0,o.Fl)((()=>e.hijackFilter||null))}))})),(0,o.Jd)((()=>{null!==c&&clearTimeout(c),!0===k&&h(w)})),Object.assign(n,{start:w,stop:x,increment:_}),()=>(0,o.h)("div",{class:d.value,style:y.value,...b.value})}})},61357:(e,t,n)=>{n.d(t,{Z:()=>s});var o=n(59835),r=n(22857),a=n(20244),i=n(65987),l=n(22026);const s=(0,i.L)({name:"QAvatar",props:{...a.LU,fontSize:String,color:String,textColor:String,icon:String,square:Boolean,rounded:Boolean},setup(e,{slots:t}){const n=(0,a.ZP)(e),i=(0,o.Fl)((()=>"q-avatar"+(e.color?` bg-${e.color}`:"")+(e.textColor?` text-${e.textColor} q-chip--colored`:"")+(!0===e.square?" q-avatar--square":!0===e.rounded?" rounded-borders":""))),s=(0,o.Fl)((()=>e.fontSize?{fontSize:e.fontSize}:null));return()=>{const a=void 0!==e.icon?[(0,o.h)(r.Z,{name:e.icon})]:void 0;return(0,o.h)("div",{class:i.value,style:n.value},[(0,o.h)("div",{class:"q-avatar__content row flex-center overflow-hidden",style:s.value},(0,l.pf)(t.default,a))])}}})},68879:(e,t,n)=>{n.d(t,{Z:()=>y});n(72879);var o=n(59835),r=n(60499),a=n(61957),i=n(22857),l=n(63940),s=n(51136),u=n(36073),c=n(65987),d=n(22026),f=n(91384),p=n(61705);const{passiveCapture:v}=f.listenOpts;let h=null,m=null,g=null;const y=(0,c.L)({name:"QBtn",props:{...u.b7,percentage:Number,darkPercentage:Boolean,onTouchstart:[Function,Array]},emits:["click","keydown","mousedown","keyup"],setup(e,{slots:t,emit:n}){const{proxy:c}=(0,o.FN)(),{classes:y,style:b,innerClasses:w,attributes:_,hasLink:x,linkTag:S,navigateOnClick:k,isActionable:O}=(0,u.ZP)(e),E=(0,r.iH)(null),F=(0,r.iH)(null);let q,C=null,R=null;const A=(0,o.Fl)((()=>void 0!==e.label&&null!==e.label&&""!==e.label)),T=(0,o.Fl)((()=>!0!==e.disable&&!1!==e.ripple&&{keyCodes:!0===x.value?[13,32]:[13],...!0===e.ripple?{}:e.ripple})),j=(0,o.Fl)((()=>({center:e.round}))),B=(0,o.Fl)((()=>{const t=Math.max(0,Math.min(100,e.percentage));return t>0?{transition:"transform 0.6s",transform:`translateX(${t-100}%)`}:{}})),P=(0,o.Fl)((()=>{if(!0===e.loading)return{onMousedown:$,onTouchstart:$,onClick:$,onKeydown:$,onKeyup:$};if(!0===O.value){const t={onClick:N,onKeydown:M,onMousedown:U};if(!0===c.$q.platform.has.touch){const n=void 0!==e.onTouchstart?"":"Passive";t[`onTouchstart${n}`]=V}return t}return{onClick:f.NS}})),L=(0,o.Fl)((()=>({ref:E,class:"q-btn q-btn-item non-selectable no-outline "+y.value,style:b.value,..._.value,...P.value})));function N(t){if(null!==E.value){if(void 0!==t){if(!0===t.defaultPrevented)return;const n=document.activeElement;if("submit"===e.type&&n!==document.body&&!1===E.value.contains(n)&&!1===n.contains(E.value)){E.value.focus();const e=()=>{document.removeEventListener("keydown",f.NS,!0),document.removeEventListener("keyup",e,v),null!==E.value&&E.value.removeEventListener("blur",e,v)};document.addEventListener("keydown",f.NS,!0),document.addEventListener("keyup",e,v),E.value.addEventListener("blur",e,v)}}k(t)}}function M(e){null!==E.value&&(n("keydown",e),!0===(0,p.So)(e,[13,32])&&m!==E.value&&(null!==m&&D(),!0!==e.defaultPrevented&&(E.value.focus(),m=E.value,E.value.classList.add("q-btn--active"),document.addEventListener("keyup",z,!0),E.value.addEventListener("blur",z,v)),(0,f.NS)(e)))}function V(e){null!==E.value&&(n("touchstart",e),!0!==e.defaultPrevented&&(h!==E.value&&(null!==h&&D(),h=E.value,C=e.target,C.addEventListener("touchcancel",z,v),C.addEventListener("touchend",z,v)),q=!0,null!==R&&clearTimeout(R),R=setTimeout((()=>{R=null,q=!1}),200)))}function U(e){null!==E.value&&(e.qSkipRipple=!0===q,n("mousedown",e),!0!==e.defaultPrevented&&g!==E.value&&(null!==g&&D(),g=E.value,E.value.classList.add("q-btn--active"),document.addEventListener("mouseup",z,v)))}function z(e){if(null!==E.value&&(void 0===e||"blur"!==e.type||document.activeElement!==E.value)){if(void 0!==e&&"keyup"===e.type){if(m===E.value&&!0===(0,p.So)(e,[13,32])){const t=new MouseEvent("click",e);t.qKeyEvent=!0,!0===e.defaultPrevented&&(0,f.X$)(t),!0===e.cancelBubble&&(0,f.sT)(t),E.value.dispatchEvent(t),(0,f.NS)(e),e.qKeyEvent=!0}n("keyup",e)}D()}}function D(e){const t=F.value;!0===e||h!==E.value&&g!==E.value||null===t||t===document.activeElement||(t.setAttribute("tabindex",-1),t.focus()),h===E.value&&(null!==C&&(C.removeEventListener("touchcancel",z,v),C.removeEventListener("touchend",z,v)),h=C=null),g===E.value&&(document.removeEventListener("mouseup",z,v),g=null),m===E.value&&(document.removeEventListener("keyup",z,!0),null!==E.value&&E.value.removeEventListener("blur",z,v),m=null),null!==E.value&&E.value.classList.remove("q-btn--active")}function $(e){(0,f.NS)(e),e.qSkipRipple=!0}return(0,o.Jd)((()=>{D(!0)})),Object.assign(c,{click:N}),()=>{let n=[];void 0!==e.icon&&n.push((0,o.h)(i.Z,{name:e.icon,left:!1===e.stack&&!0===A.value,role:"img","aria-hidden":"true"})),!0===A.value&&n.push((0,o.h)("span",{class:"block"},[e.label])),n=(0,d.vs)(t.default,n),void 0!==e.iconRight&&!1===e.round&&n.push((0,o.h)(i.Z,{name:e.iconRight,right:!1===e.stack&&!0===A.value,role:"img","aria-hidden":"true"}));const r=[(0,o.h)("span",{class:"q-focus-helper",ref:F})];return!0===e.loading&&void 0!==e.percentage&&r.push((0,o.h)("span",{class:"q-btn__progress absolute-full overflow-hidden"+(!0===e.darkPercentage?" q-btn__progress--dark":"")},[(0,o.h)("span",{class:"q-btn__progress-indicator fit block",style:B.value})])),r.push((0,o.h)("span",{class:"q-btn__content text-center col items-center q-anchor--skip "+w.value},n)),null!==e.loading&&r.push((0,o.h)(a.uT,{name:"q-transition--fade"},(()=>!0===e.loading?[(0,o.h)("span",{key:"loading",class:"absolute-full flex flex-center"},void 0!==t.loading?t.loading():[(0,o.h)(l.Z)])]:null))),(0,o.wy)((0,o.h)(S.value,L.value,r),[[s.Z,T.value,void 0,j.value]])}}})},36073:(e,t,n)=>{n.d(t,{ZP:()=>h,_V:()=>p,b7:()=>v});n(72879);var o=n(59835),r=n(65065),a=n(20244),i=n(70945);const l={none:0,xs:4,sm:8,md:16,lg:24,xl:32},s={xs:8,sm:10,md:14,lg:20,xl:24},u=["button","submit","reset"],c=/[^\s]\/[^\s]/,d=["flat","outline","push","unelevated"],f=(e,t)=>!0===e.flat?"flat":!0===e.outline?"outline":!0===e.push?"push":!0===e.unelevated?"unelevated":t,p=e=>{const t=f(e);return void 0!==t?{[t]:!0}:{}},v={...a.LU,...i.$,type:{type:String,default:"button"},label:[Number,String],icon:String,iconRight:String,...d.reduce(((e,t)=>(e[t]=Boolean)&&e),{}),square:Boolean,round:Boolean,rounded:Boolean,glossy:Boolean,size:String,fab:Boolean,fabMini:Boolean,padding:String,color:String,textColor:String,noCaps:Boolean,noWrap:Boolean,dense:Boolean,tabindex:[Number,String],ripple:{type:[Boolean,Object],default:!0},align:{...r.jO.align,default:"center"},stack:Boolean,stretch:Boolean,loading:{type:Boolean,default:null},disable:Boolean};function h(e){const t=(0,a.ZP)(e,s),n=(0,r.ZP)(e),{hasRouterLink:d,hasLink:p,linkTag:v,linkAttrs:h,navigateOnClick:m}=(0,i.Z)({fallbackTag:"button"}),g=(0,o.Fl)((()=>{const n=!1===e.fab&&!1===e.fabMini?t.value:{};return void 0!==e.padding?Object.assign({},n,{padding:e.padding.split(/\s+/).map((e=>e in l?l[e]+"px":e)).join(" "),minWidth:"0",minHeight:"0"}):n})),y=(0,o.Fl)((()=>!0===e.rounded||!0===e.fab||!0===e.fabMini)),b=(0,o.Fl)((()=>!0!==e.disable&&!0!==e.loading)),w=(0,o.Fl)((()=>!0===b.value?e.tabindex||0:-1)),_=(0,o.Fl)((()=>f(e,"standard"))),x=(0,o.Fl)((()=>{const t={tabindex:w.value};return!0===p.value?Object.assign(t,h.value):!0===u.includes(e.type)&&(t.type=e.type),"a"===v.value?(!0===e.disable?t["aria-disabled"]="true":void 0===t.href&&(t.role="button"),!0!==d.value&&!0===c.test(e.type)&&(t.type=e.type)):!0===e.disable&&(t.disabled="",t["aria-disabled"]="true"),!0===e.loading&&void 0!==e.percentage&&Object.assign(t,{role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":e.percentage}),t})),S=(0,o.Fl)((()=>{let t;void 0!==e.color?t=!0===e.flat||!0===e.outline?`text-${e.textColor||e.color}`:`bg-${e.color} text-${e.textColor||"white"}`:e.textColor&&(t=`text-${e.textColor}`);const n=!0===e.round?"round":"rectangle"+(!0===y.value?" q-btn--rounded":!0===e.square?" q-btn--square":"");return`q-btn--${_.value} q-btn--${n}`+(void 0!==t?" "+t:"")+(!0===b.value?" q-btn--actionable q-focusable q-hoverable":!0===e.disable?" disabled":"")+(!0===e.fab?" q-btn--fab":!0===e.fabMini?" q-btn--fab-mini":"")+(!0===e.noCaps?" q-btn--no-uppercase":"")+(!0===e.dense?" q-btn--dense":"")+(!0===e.stretch?" no-border-radius self-stretch":"")+(!0===e.glossy?" glossy":"")+(e.square?" q-btn--square":"")})),k=(0,o.Fl)((()=>n.value+(!0===e.stack?" column":" row")+(!0===e.noWrap?" no-wrap text-no-wrap":"")+(!0===e.loading?" q-btn__content--hidden":"")));return{classes:S,style:g,innerClasses:k,attributes:x,hasLink:p,linkTag:v,navigateOnClick:m,isActionable:b}}},44458:(e,t,n)=>{n.d(t,{Z:()=>l});var o=n(59835),r=n(68234),a=n(65987),i=n(22026);const l=(0,a.L)({name:"QCard",props:{...r.S,tag:{type:String,default:"div"},square:Boolean,flat:Boolean,bordered:Boolean},setup(e,{slots:t}){const{proxy:{$q:n}}=(0,o.FN)(),a=(0,r.Z)(e,n),l=(0,o.Fl)((()=>"q-card"+(!0===a.value?" q-card--dark q-dark":"")+(!0===e.bordered?" q-card--bordered":"")+(!0===e.square?" q-card--square no-border-radius":"")+(!0===e.flat?" q-card--flat no-shadow":"")));return()=>(0,o.h)(e.tag,{class:l.value},(0,i.KR)(t.default))}})},11821:(e,t,n)=>{n.d(t,{Z:()=>l});var o=n(59835),r=n(65065),a=n(65987),i=n(22026);const l=(0,a.L)({name:"QCardActions",props:{...r.jO,vertical:Boolean},setup(e,{slots:t}){const n=(0,r.ZP)(e),a=(0,o.Fl)((()=>`q-card__actions ${n.value} q-card__actions--`+(!0===e.vertical?"vert column":"horiz row")));return()=>(0,o.h)("div",{class:a.value},(0,i.KR)(t.default))}})},63190:(e,t,n)=>{n.d(t,{Z:()=>i});var o=n(59835),r=n(65987),a=n(22026);const i=(0,r.L)({name:"QCardSection",props:{tag:{type:String,default:"div"},horizontal:Boolean},setup(e,{slots:t}){const n=(0,o.Fl)((()=>"q-card__section q-card__section--"+(!0===e.horizontal?"horiz row no-wrap":"vert")));return()=>(0,o.h)(e.tag,{class:n.value},(0,a.KR)(t.default))}})},11221:(e,t,n)=>{n.d(t,{Z:()=>s});var o=n(59835),r=n(22857),a=n(65987),i=n(71926);const l=(0,o.h)("div",{key:"svg",class:"q-checkbox__bg absolute"},[(0,o.h)("svg",{class:"q-checkbox__svg fit absolute-full",viewBox:"0 0 24 24"},[(0,o.h)("path",{class:"q-checkbox__truthy",fill:"none",d:"M1.73,12.91 8.1,19.28 22.79,4.59"}),(0,o.h)("path",{class:"q-checkbox__indet",d:"M4,14H20V10H4"})])]),s=(0,a.L)({name:"QCheckbox",props:i.Fz,emits:i.ZB,setup(e){function t(t,n){const a=(0,o.Fl)((()=>(!0===t.value?e.checkedIcon:!0===n.value?e.indeterminateIcon:e.uncheckedIcon)||null));return()=>null!==a.value?[(0,o.h)("div",{key:"icon",class:"q-checkbox__icon-container absolute-full flex flex-center no-wrap"},[(0,o.h)(r.Z,{class:"q-checkbox__icon",name:a.value})])]:[l]}return(0,i.ZP)("checkbox",t)}})},71926:(e,t,n)=>{n.d(t,{Fz:()=>f,ZB:()=>p,ZP:()=>v});n(72879);var o=n(59835),r=n(60499),a=n(68234),i=n(20244),l=n(55917),s=n(99256),u=n(89480),c=n(91384),d=n(22026);const f={...a.S,...i.LU,...s.Fz,modelValue:{required:!0,default:null},val:{},trueValue:{default:!0},falseValue:{default:!1},indeterminateValue:{default:null},checkedIcon:String,uncheckedIcon:String,indeterminateIcon:String,toggleOrder:{type:String,validator:e=>"tf"===e||"ft"===e},toggleIndeterminate:Boolean,label:String,leftLabel:Boolean,color:String,keepColor:Boolean,dense:Boolean,disable:Boolean,tabindex:[String,Number]},p=["update:modelValue"];function v(e,t){const{props:n,slots:f,emit:p,proxy:v}=(0,o.FN)(),{$q:h}=v,m=(0,a.Z)(n,h),g=(0,r.iH)(null),{refocusTargetEl:y,refocusTarget:b}=(0,l.Z)(n,g),w=(0,i.ZP)(n,u.Z),_=(0,o.Fl)((()=>void 0!==n.val&&Array.isArray(n.modelValue))),x=(0,o.Fl)((()=>{const e=(0,r.IU)(n.val);return!0===_.value?n.modelValue.findIndex((t=>(0,r.IU)(t)===e)):-1})),S=(0,o.Fl)((()=>!0===_.value?x.value>-1:(0,r.IU)(n.modelValue)===(0,r.IU)(n.trueValue))),k=(0,o.Fl)((()=>!0===_.value?-1===x.value:(0,r.IU)(n.modelValue)===(0,r.IU)(n.falseValue))),O=(0,o.Fl)((()=>!1===S.value&&!1===k.value)),E=(0,o.Fl)((()=>!0===n.disable?-1:n.tabindex||0)),F=(0,o.Fl)((()=>`q-${e} cursor-pointer no-outline row inline no-wrap items-center`+(!0===n.disable?" disabled":"")+(!0===m.value?` q-${e}--dark`:"")+(!0===n.dense?` q-${e}--dense`:"")+(!0===n.leftLabel?" reverse":""))),q=(0,o.Fl)((()=>{const t=!0===S.value?"truthy":!0===k.value?"falsy":"indet",o=void 0===n.color||!0!==n.keepColor&&("toggle"===e?!0!==S.value:!0===k.value)?"":` text-${n.color}`;return`q-${e}__inner relative-position non-selectable q-${e}__inner--${t}${o}`})),C=(0,o.Fl)((()=>{const e={type:"checkbox"};return void 0!==n.name&&Object.assign(e,{".checked":S.value,"^checked":!0===S.value?"checked":void 0,name:n.name,value:!0===_.value?n.val:n.trueValue}),e})),R=(0,s.eX)(C),A=(0,o.Fl)((()=>{const t={tabindex:E.value,role:"toggle"===e?"switch":"checkbox","aria-label":n.label,"aria-checked":!0===O.value?"mixed":!0===S.value?"true":"false"};return!0===n.disable&&(t["aria-disabled"]="true"),t}));function T(e){void 0!==e&&((0,c.NS)(e),b(e)),!0!==n.disable&&p("update:modelValue",j(),e)}function j(){if(!0===_.value){if(!0===S.value){const e=n.modelValue.slice();return e.splice(x.value,1),e}return n.modelValue.concat([n.val])}if(!0===S.value){if("ft"!==n.toggleOrder||!1===n.toggleIndeterminate)return n.falseValue}else{if(!0!==k.value)return"ft"!==n.toggleOrder?n.trueValue:n.falseValue;if("ft"===n.toggleOrder||!1===n.toggleIndeterminate)return n.trueValue}return n.indeterminateValue}function B(e){13!==e.keyCode&&32!==e.keyCode||(0,c.NS)(e)}function P(e){13!==e.keyCode&&32!==e.keyCode||T(e)}const L=t(S,O);return Object.assign(v,{toggle:T}),()=>{const t=L();!0!==n.disable&&R(t,"unshift",` q-${e}__native absolute q-ma-none q-pa-none`);const r=[(0,o.h)("div",{class:q.value,style:w.value,"aria-hidden":"true"},t)];null!==y.value&&r.push(y.value);const a=void 0!==n.label?(0,d.vs)(f.default,[n.label]):(0,d.KR)(f.default);return void 0!==a&&r.push((0,o.h)("div",{class:`q-${e}__label q-anchor--skip`},a)),(0,o.h)("div",{ref:g,class:F.value,...A.value,onClick:T,onKeydown:B,onKeyup:P},r)}}},95173:(e,t,n)=>{n.d(t,{Z:()=>T});n(72879);var o=n(59835),r=n(60499),a=n(32074),i=n(68879),l=n(44458),s=n(63190),u=n(11821),c=n(50926),d=n(66611),f=n(22857),p=n(68234),v=n(20244),h=n(55917),m=n(99256),g=n(65987),y=n(89480),b=n(91384),w=n(22026);const _=(0,o.h)("svg",{key:"svg",class:"q-radio__bg absolute non-selectable",viewBox:"0 0 24 24"},[(0,o.h)("path",{d:"M12,22a10,10 0 0 1 -10,-10a10,10 0 0 1 10,-10a10,10 0 0 1 10,10a10,10 0 0 1 -10,10m0,-22a12,12 0 0 0 -12,12a12,12 0 0 0 12,12a12,12 0 0 0 12,-12a12,12 0 0 0 -12,-12"}),(0,o.h)("path",{class:"q-radio__check",d:"M12,6a6,6 0 0 0 -6,6a6,6 0 0 0 6,6a6,6 0 0 0 6,-6a6,6 0 0 0 -6,-6"})]),x=(0,g.L)({name:"QRadio",props:{...p.S,...v.LU,...m.Fz,modelValue:{required:!0},val:{required:!0},label:String,leftLabel:Boolean,checkedIcon:String,uncheckedIcon:String,color:String,keepColor:Boolean,dense:Boolean,disable:Boolean,tabindex:[String,Number]},emits:["update:modelValue"],setup(e,{slots:t,emit:n}){const{proxy:a}=(0,o.FN)(),i=(0,p.Z)(e,a.$q),l=(0,v.ZP)(e,y.Z),s=(0,r.iH)(null),{refocusTargetEl:u,refocusTarget:c}=(0,h.Z)(e,s),d=(0,o.Fl)((()=>(0,r.IU)(e.modelValue)===(0,r.IU)(e.val))),g=(0,o.Fl)((()=>"q-radio cursor-pointer no-outline row inline no-wrap items-center"+(!0===e.disable?" disabled":"")+(!0===i.value?" q-radio--dark":"")+(!0===e.dense?" q-radio--dense":"")+(!0===e.leftLabel?" reverse":""))),x=(0,o.Fl)((()=>{const t=void 0===e.color||!0!==e.keepColor&&!0!==d.value?"":` text-${e.color}`;return`q-radio__inner relative-position q-radio__inner--${!0===d.value?"truthy":"falsy"}${t}`})),S=(0,o.Fl)((()=>(!0===d.value?e.checkedIcon:e.uncheckedIcon)||null)),k=(0,o.Fl)((()=>!0===e.disable?-1:e.tabindex||0)),O=(0,o.Fl)((()=>{const t={type:"radio"};return void 0!==e.name&&Object.assign(t,{".checked":!0===d.value,"^checked":!0===d.value?"checked":void 0,name:e.name,value:e.val}),t})),E=(0,m.eX)(O);function F(t){void 0!==t&&((0,b.NS)(t),c(t)),!0!==e.disable&&!0!==d.value&&n("update:modelValue",e.val,t)}function q(e){13!==e.keyCode&&32!==e.keyCode||(0,b.NS)(e)}function C(e){13!==e.keyCode&&32!==e.keyCode||F(e)}return Object.assign(a,{set:F}),()=>{const n=null!==S.value?[(0,o.h)("div",{key:"icon",class:"q-radio__icon-container absolute-full flex flex-center no-wrap"},[(0,o.h)(f.Z,{class:"q-radio__icon",name:S.value})])]:[_];!0!==e.disable&&E(n,"unshift"," q-radio__native q-ma-none q-pa-none");const r=[(0,o.h)("div",{class:x.value,style:l.value,"aria-hidden":"true"},n)];null!==u.value&&r.push(u.value);const a=void 0!==e.label?(0,w.vs)(t.default,[e.label]):(0,w.KR)(t.default);return void 0!==a&&r.push((0,o.h)("div",{class:"q-radio__label q-anchor--skip"},a)),(0,o.h)("div",{ref:s,class:g.value,tabindex:k.value,role:"radio","aria-label":e.label,"aria-checked":!0===d.value?"true":"false","aria-disabled":!0===e.disable?"true":void 0,onClick:F,onKeydown:q,onKeyup:C},r)}}});var S=n(11221),k=n(71926);const O=(0,g.L)({name:"QToggle",props:{...k.Fz,icon:String,iconColor:String},emits:k.ZB,setup(e){function t(t,n){const r=(0,o.Fl)((()=>(!0===t.value?e.checkedIcon:!0===n.value?e.indeterminateIcon:e.uncheckedIcon)||e.icon)),a=(0,o.Fl)((()=>!0===t.value?e.iconColor:null));return()=>[(0,o.h)("div",{class:"q-toggle__track"}),(0,o.h)("div",{class:"q-toggle__thumb absolute flex flex-center no-wrap"},void 0!==r.value?[(0,o.h)(f.Z,{name:r.value,color:a.value})]:void 0)]}return(0,k.ZP)("toggle",t)}}),E={radio:x,checkbox:S.Z,toggle:O},F=Object.keys(E),q=(0,g.L)({name:"QOptionGroup",props:{...p.S,modelValue:{required:!0},options:{type:Array,validator:e=>e.every((e=>"value"in e&&"label"in e))},name:String,type:{default:"radio",validator:e=>F.includes(e)},color:String,keepColor:Boolean,dense:Boolean,size:String,leftLabel:Boolean,inline:Boolean,disable:Boolean},emits:["update:modelValue"],setup(e,{emit:t,slots:n}){const{proxy:{$q:r}}=(0,o.FN)(),a=Array.isArray(e.modelValue);"radio"===e.type?!0===a&&console.error("q-option-group: model should not be array"):!1===a&&console.error("q-option-group: model should be array in your case");const i=(0,p.Z)(e,r),l=(0,o.Fl)((()=>E[e.type])),s=(0,o.Fl)((()=>"q-option-group q-gutter-x-sm"+(!0===e.inline?" q-option-group--inline":""))),u=(0,o.Fl)((()=>{const t={role:"group"};return"radio"===e.type&&(t.role="radiogroup",!0===e.disable&&(t["aria-disabled"]="true")),t}));function c(e){t("update:modelValue",e)}return()=>(0,o.h)("div",{class:s.value,...u.value},e.options.map(((t,r)=>{const a=void 0!==n["label-"+r]?()=>n["label-"+r](t):void 0!==n.label?()=>n.label(t):void 0;return(0,o.h)("div",[(0,o.h)(l.value,{modelValue:e.modelValue,val:t.value,name:void 0===t.name?e.name:t.name,disable:e.disable||t.disable,label:void 0===a?t.label:null,leftLabel:void 0===t.leftLabel?e.leftLabel:t.leftLabel,color:void 0===t.color?e.color:t.color,checkedIcon:t.checkedIcon,uncheckedIcon:t.uncheckedIcon,dark:t.dark||i.value,size:void 0===t.size?e.size:t.size,dense:e.dense,keepColor:void 0===t.keepColor?e.keepColor:t.keepColor,"onUpdate:modelValue":c},a)])})))}});var C=n(63940),R=n(61705),A=n(4680);const T=(0,g.L)({name:"DialogPlugin",props:{...p.S,title:String,message:String,prompt:Object,options:Object,progress:[Boolean,Object],html:Boolean,ok:{type:[String,Object,Boolean],default:!0},cancel:[String,Object,Boolean],focus:{type:String,default:"ok",validator:e=>["ok","cancel","none"].includes(e)},stackButtons:Boolean,color:String,cardClass:[String,Array,Object],cardStyle:[String,Array,Object]},emits:["ok","hide"],setup(e,{emit:t}){const{proxy:n}=(0,o.FN)(),{$q:f}=n,v=(0,p.Z)(e,f),h=(0,r.iH)(null),m=(0,r.iH)(void 0!==e.prompt?e.prompt.model:void 0!==e.options?e.options.model:void 0),g=(0,o.Fl)((()=>"q-dialog-plugin"+(!0===v.value?" q-dialog-plugin--dark q-dark":"")+(!1!==e.progress?" q-dialog-plugin--progress":""))),y=(0,o.Fl)((()=>e.color||(!0===v.value?"amber":"primary"))),b=(0,o.Fl)((()=>!1===e.progress?null:!0===(0,A.Kn)(e.progress)?{component:e.progress.spinner||C.Z,props:{color:e.progress.color||y.value}}:{component:C.Z,props:{color:y.value}})),w=(0,o.Fl)((()=>void 0!==e.prompt||void 0!==e.options)),_=(0,o.Fl)((()=>{if(!0!==w.value)return{};const{model:t,isValid:n,items:o,...r}=void 0!==e.prompt?e.prompt:e.options;return r})),x=(0,o.Fl)((()=>!0===(0,A.Kn)(e.ok)||!0===e.ok?f.lang.label.ok:e.ok)),S=(0,o.Fl)((()=>!0===(0,A.Kn)(e.cancel)||!0===e.cancel?f.lang.label.cancel:e.cancel)),k=(0,o.Fl)((()=>void 0!==e.prompt?void 0!==e.prompt.isValid&&!0!==e.prompt.isValid(m.value):void 0!==e.options&&(void 0!==e.options.isValid&&!0!==e.options.isValid(m.value)))),O=(0,o.Fl)((()=>({color:y.value,label:x.value,ripple:!1,disable:k.value,...!0===(0,A.Kn)(e.ok)?e.ok:{flat:!0},"data-autofocus":"ok"===e.focus&&!0!==w.value||void 0,onClick:j}))),E=(0,o.Fl)((()=>({color:y.value,label:S.value,ripple:!1,...!0===(0,A.Kn)(e.cancel)?e.cancel:{flat:!0},"data-autofocus":"cancel"===e.focus&&!0!==w.value||void 0,onClick:B})));function F(){h.value.show()}function T(){h.value.hide()}function j(){t("ok",(0,r.IU)(m.value)),T()}function B(){T()}function P(){t("hide")}function L(e){m.value=e}function N(t){!0!==k.value&&"textarea"!==e.prompt.type&&!0===(0,R.So)(t,13)&&j()}function M(t,n){return!0===e.html?(0,o.h)(s.Z,{class:t,innerHTML:n}):(0,o.h)(s.Z,{class:t},(()=>n))}function V(){return[(0,o.h)(d.Z,{color:y.value,dense:!0,autofocus:!0,dark:v.value,..._.value,modelValue:m.value,"onUpdate:modelValue":L,onKeyup:N})]}function U(){return[(0,o.h)(q,{color:y.value,options:e.options.items,dark:v.value,..._.value,modelValue:m.value,"onUpdate:modelValue":L})]}function z(){const t=[];return e.cancel&&t.push((0,o.h)(i.Z,E.value)),e.ok&&t.push((0,o.h)(i.Z,O.value)),(0,o.h)(u.Z,{class:!0===e.stackButtons?"items-end":"",vertical:e.stackButtons,align:"right"},(()=>t))}function D(){const t=[];return e.title&&t.push(M("q-dialog__title",e.title)),!1!==e.progress&&t.push((0,o.h)(s.Z,{class:"q-dialog__progress"},(()=>(0,o.h)(b.value.component,b.value.props)))),e.message&&t.push(M("q-dialog__message",e.message)),void 0!==e.prompt?t.push((0,o.h)(s.Z,{class:"scroll q-dialog-plugin__form"},V)):void 0!==e.options&&t.push((0,o.h)(c.Z,{dark:v.value}),(0,o.h)(s.Z,{class:"scroll q-dialog-plugin__form"},U),(0,o.h)(c.Z,{dark:v.value})),(e.ok||e.cancel)&&t.push(z()),t}function $(){return[(0,o.h)(l.Z,{class:[g.value,e.cardClass],style:e.cardStyle,dark:v.value},D)]}return(0,o.YP)((()=>e.prompt&&e.prompt.model),L),(0,o.YP)((()=>e.options&&e.options.model),L),Object.assign(n,{show:F,hide:T}),()=>(0,o.h)(a.Z,{ref:h,onHide:P},$)}})},32074:(e,t,n)=>{n.d(t,{Z:()=>x});var o=n(59835),r=n(60499),a=n(61957),i=n(94953),l=n(52695),s=n(16916),u=n(63842),c=n(20431),d=n(91518),f=n(13963),p=n(65987),v=n(70223),h=n(22026),m=n(16532),g=n(4173),y=n(17026);let b=0;const w={standard:"fixed-full flex-center",top:"fixed-top justify-center",bottom:"fixed-bottom justify-center",right:"fixed-right items-center",left:"fixed-left items-center"},_={standard:["scale","scale"],top:["slide-down","slide-up"],bottom:["slide-up","slide-down"],right:["slide-left","slide-right"],left:["slide-right","slide-left"]},x=(0,p.L)({name:"QDialog",inheritAttrs:!1,props:{...u.vr,...c.D,transitionShow:String,transitionHide:String,persistent:Boolean,autoClose:Boolean,allowFocusOutside:Boolean,noEscDismiss:Boolean,noBackdropDismiss:Boolean,noRouteDismiss:Boolean,noRefocus:Boolean,noFocus:Boolean,noShake:Boolean,seamless:Boolean,maximized:Boolean,fullWidth:Boolean,fullHeight:Boolean,square:Boolean,position:{type:String,default:"standard",validator:e=>"standard"===e||["top","bottom","left","right"].includes(e)}},emits:[...u.gH,"shake","click","escapeKey"],setup(e,{slots:t,emit:n,attrs:p}){const x=(0,o.FN)(),S=(0,r.iH)(null),k=(0,r.iH)(!1),O=(0,r.iH)(!1);let E,F,q=null,C=null;const R=(0,o.Fl)((()=>!0!==e.persistent&&!0!==e.noRouteDismiss&&!0!==e.seamless)),{preventBodyScroll:A}=(0,f.Z)(),{registerTimeout:T}=(0,l.Z)(),{registerTick:j,removeTick:B}=(0,s.Z)(),{transitionProps:P,transitionStyle:L}=(0,c.Z)(e,(()=>_[e.position][0]),(()=>_[e.position][1])),{showPortal:N,hidePortal:M,portalIsAccessible:V,renderPortal:U}=(0,d.Z)(x,S,re,"dialog"),{hide:z}=(0,u.ZP)({showing:k,hideOnRouteChange:R,handleShow:J,handleHide:W,processOnMount:!0}),{addToHistory:D,removeFromHistory:$}=(0,i.Z)(k,z,R),I=(0,o.Fl)((()=>"q-dialog__inner flex no-pointer-events q-dialog__inner--"+(!0===e.maximized?"maximized":"minimized")+` q-dialog__inner--${e.position} ${w[e.position]}`+(!0===O.value?" q-dialog__inner--animating":"")+(!0===e.fullWidth?" q-dialog__inner--fullwidth":"")+(!0===e.fullHeight?" q-dialog__inner--fullheight":"")+(!0===e.square?" q-dialog__inner--square":""))),Z=(0,o.Fl)((()=>!0===k.value&&!0!==e.seamless)),H=(0,o.Fl)((()=>!0===e.autoClose?{onClick:te}:{})),K=(0,o.Fl)((()=>["q-dialog fullscreen no-pointer-events q-dialog--"+(!0===Z.value?"modal":"seamless"),p.class]));function J(t){D(),C=!1===e.noRefocus&&null!==document.activeElement?document.activeElement:null,ee(e.maximized),N(),O.value=!0,!0!==e.noFocus?(null!==document.activeElement&&document.activeElement.blur(),j(Y)):B(),T((()=>{if(!0===x.proxy.$q.platform.is.ios){if(!0!==e.seamless&&document.activeElement){const{top:e,bottom:t}=document.activeElement.getBoundingClientRect(),{innerHeight:n}=window,o=void 0!==window.visualViewport?window.visualViewport.height:n;e>0&&t>o/2&&(document.scrollingElement.scrollTop=Math.min(document.scrollingElement.scrollHeight-o,t>=n?1/0:Math.ceil(document.scrollingElement.scrollTop+t-o/2))),document.activeElement.scrollIntoView()}F=!0,S.value.click(),F=!1}N(!0),O.value=!1,n("show",t)}),e.transitionDuration)}function W(t){B(),$(),G(!0),O.value=!0,M(),null!==C&&(((t&&0===t.type.indexOf("key")?C.closest('[tabindex]:not([tabindex^="-"])'):void 0)||C).focus(),C=null),T((()=>{M(!0),O.value=!1,n("hide",t)}),e.transitionDuration)}function Y(e){(0,y.jd)((()=>{let t=S.value;null!==t&&!0!==t.contains(document.activeElement)&&(t=(""!==e?t.querySelector(e):null)||t.querySelector("[autofocus][tabindex], [data-autofocus][tabindex]")||t.querySelector("[autofocus] [tabindex], [data-autofocus] [tabindex]")||t.querySelector("[autofocus], [data-autofocus]")||t,t.focus({preventScroll:!0}))}))}function Q(e){e&&"function"===typeof e.focus?e.focus({preventScroll:!0}):Y(),n("shake");const t=S.value;null!==t&&(t.classList.remove("q-animate--scale"),t.classList.add("q-animate--scale"),null!==q&&clearTimeout(q),q=setTimeout((()=>{q=null,null!==S.value&&(t.classList.remove("q-animate--scale"),Y())}),170))}function X(){!0!==e.seamless&&(!0===e.persistent||!0===e.noEscDismiss?!0!==e.maximized&&!0!==e.noShake&&Q():(n("escapeKey"),z()))}function G(t){null!==q&&(clearTimeout(q),q=null),!0!==t&&!0!==k.value||(ee(!1),!0!==e.seamless&&(A(!1),(0,g.H)(oe),(0,m.k)(X))),!0!==t&&(C=null)}function ee(e){!0===e?!0!==E&&(b<1&&document.body.classList.add("q-body--dialog"),b++,E=!0):!0===E&&(b<2&&document.body.classList.remove("q-body--dialog"),b--,E=!1)}function te(e){!0!==F&&(z(e),n("click",e))}function ne(t){!0!==e.persistent&&!0!==e.noBackdropDismiss?z(t):!0!==e.noShake&&Q()}function oe(t){!0!==e.allowFocusOutside&&!0===V.value&&!0!==(0,v.mY)(S.value,t.target)&&Y('[tabindex]:not([tabindex="-1"])')}function re(){return(0,o.h)("div",{role:"dialog","aria-modal":!0===Z.value?"true":"false",...p,class:K.value},[(0,o.h)(a.uT,{name:"q-transition--fade",appear:!0},(()=>!0===Z.value?(0,o.h)("div",{class:"q-dialog__backdrop fixed-full",style:L.value,"aria-hidden":"true",tabindex:-1,onClick:ne}):null)),(0,o.h)(a.uT,P.value,(()=>!0===k.value?(0,o.h)("div",{ref:S,class:I.value,style:L.value,tabindex:-1,...H.value},(0,h.KR)(t.default)):null))])}return(0,o.YP)((()=>e.maximized),(e=>{!0===k.value&&ee(e)})),(0,o.YP)(Z,(e=>{A(e),!0===e?((0,g.i)(oe),(0,m.c)(X)):((0,g.H)(oe),(0,m.k)(X))})),Object.assign(x.proxy,{focus:Y,shake:Q,__updateRefocusTarget(e){C=e||null}}),(0,o.Jd)(G),U}})},22857:(e,t,n)=>{n.d(t,{Z:()=>_});var o=n(59835),r=n(20244),a=n(65987),i=n(22026);const l="0 0 24 24",s=e=>e,u=e=>`ionicons ${e}`,c={"mdi-":e=>`mdi ${e}`,"icon-":s,"bt-":e=>`bt ${e}`,"eva-":e=>`eva ${e}`,"ion-md":u,"ion-ios":u,"ion-logo":u,"iconfont ":s,"ti-":e=>`themify-icon ${e}`,"bi-":e=>`bootstrap-icons ${e}`},d={o_:"-outlined",r_:"-round",s_:"-sharp"},f={sym_o_:"-outlined",sym_r_:"-rounded",sym_s_:"-sharp"},p=new RegExp("^("+Object.keys(c).join("|")+")"),v=new RegExp("^("+Object.keys(d).join("|")+")"),h=new RegExp("^("+Object.keys(f).join("|")+")"),m=/^[Mm]\s?[-+]?\.?\d/,g=/^img:/,y=/^svguse:/,b=/^ion-/,w=/^(fa-(sharp|solid|regular|light|brands|duotone|thin)|[lf]a[srlbdk]?) /,_=(0,a.L)({name:"QIcon",props:{...r.LU,tag:{type:String,default:"i"},name:String,color:String,left:Boolean,right:Boolean},setup(e,{slots:t}){const{proxy:{$q:n}}=(0,o.FN)(),a=(0,r.ZP)(e),s=(0,o.Fl)((()=>"q-icon"+(!0===e.left?" on-left":"")+(!0===e.right?" on-right":"")+(void 0!==e.color?` text-${e.color}`:""))),u=(0,o.Fl)((()=>{let t,r=e.name;if("none"===r||!r)return{none:!0};if(null!==n.iconMapFn){const e=n.iconMapFn(r);if(void 0!==e){if(void 0===e.icon)return{cls:e.cls,content:void 0!==e.content?e.content:" "};if(r=e.icon,"none"===r||!r)return{none:!0}}}if(!0===m.test(r)){const[e,t=l]=r.split("|");return{svg:!0,viewBox:t,nodes:e.split("&&").map((e=>{const[t,n,r]=e.split("@@");return(0,o.h)("path",{style:n,d:t,transform:r})}))}}if(!0===g.test(r))return{img:!0,src:r.substring(4)};if(!0===y.test(r)){const[e,t=l]=r.split("|");return{svguse:!0,src:e.substring(7),viewBox:t}}let a=" ";const i=r.match(p);if(null!==i)t=c[i[1]](r);else if(!0===w.test(r))t=r;else if(!0===b.test(r))t=`ionicons ion-${!0===n.platform.is.ios?"ios":"md"}${r.substring(3)}`;else if(!0===h.test(r)){t="notranslate material-symbols";const e=r.match(h);null!==e&&(r=r.substring(6),t+=f[e[1]]),a=r}else{t="notranslate material-icons";const e=r.match(v);null!==e&&(r=r.substring(2),t+=d[e[1]]),a=r}return{cls:t,content:a}}));return()=>{const n={class:s.value,style:a.value,"aria-hidden":"true",role:"presentation"};return!0===u.value.none?(0,o.h)(e.tag,n,(0,i.KR)(t.default)):!0===u.value.img?(0,o.h)("span",n,(0,i.vs)(t.default,[(0,o.h)("img",{src:u.value.src})])):!0===u.value.svg?(0,o.h)("span",n,(0,i.vs)(t.default,[(0,o.h)("svg",{viewBox:u.value.viewBox||"0 0 24 24"},u.value.nodes)])):!0===u.value.svguse?(0,o.h)("span",n,(0,i.vs)(t.default,[(0,o.h)("svg",{viewBox:u.value.viewBox},[(0,o.h)("use",{"xlink:href":u.value.src})])])):(void 0!==u.value.cls&&(n.class+=" "+u.value.cls),(0,o.h)(e.tag,n,(0,i.vs)(t.default,[u.value.content])))}}})},66611:(e,t,n)=>{n.d(t,{Z:()=>x});var o=n(59835),r=n(60499),a=n(16762),i=(n(72879),n(61705));const l={date:"####/##/##",datetime:"####/##/## ##:##",time:"##:##",fulltime:"##:##:##",phone:"(###) ### - ####",card:"#### #### #### ####"},s={"#":{pattern:"[\\d]",negate:"[^\\d]"},S:{pattern:"[a-zA-Z]",negate:"[^a-zA-Z]"},N:{pattern:"[0-9a-zA-Z]",negate:"[^0-9a-zA-Z]"},A:{pattern:"[a-zA-Z]",negate:"[^a-zA-Z]",transform:e=>e.toLocaleUpperCase()},a:{pattern:"[a-zA-Z]",negate:"[^a-zA-Z]",transform:e=>e.toLocaleLowerCase()},X:{pattern:"[0-9a-zA-Z]",negate:"[^0-9a-zA-Z]",transform:e=>e.toLocaleUpperCase()},x:{pattern:"[0-9a-zA-Z]",negate:"[^0-9a-zA-Z]",transform:e=>e.toLocaleLowerCase()}},u=Object.keys(s);u.forEach((e=>{s[e].regex=new RegExp(s[e].pattern)}));const c=new RegExp("\\\\([^.*+?^${}()|([\\]])|([.*+?^${}()|[\\]])|(["+u.join("")+"])|(.)","g"),d=/[.*+?^${}()|[\]\\]/g,f=String.fromCharCode(1),p={mask:String,reverseFillMask:Boolean,fillMask:[Boolean,String],unmaskedValue:Boolean};function v(e,t,n,a){let u,p,v,h,m,g;const y=(0,r.iH)(null),b=(0,r.iH)(_());function w(){return!0===e.autogrow||["textarea","text","search","url","tel","password"].includes(e.type)}function _(){if(S(),!0===y.value){const t=C(A(e.modelValue));return!1!==e.fillMask?T(t):t}return e.modelValue}function x(e){if(e-1){for(let o=e-n.length;o>0;o--)t+=f;n=n.slice(0,o)+t+n.slice(o)}return n}function S(){if(y.value=void 0!==e.mask&&0!==e.mask.length&&w(),!1===y.value)return h=void 0,u="",void(p="");const t=void 0===l[e.mask]?e.mask:l[e.mask],n="string"===typeof e.fillMask&&0!==e.fillMask.length?e.fillMask.slice(0,1):"_",o=n.replace(d,"\\$&"),r=[],a=[],i=[];let m=!0===e.reverseFillMask,g="",b="";t.replace(c,((e,t,n,o,l)=>{if(void 0!==o){const e=s[o];i.push(e),b=e.negate,!0===m&&(a.push("(?:"+b+"+)?("+e.pattern+"+)?(?:"+b+"+)?("+e.pattern+"+)?"),m=!1),a.push("(?:"+b+"+)?("+e.pattern+")?")}else if(void 0!==n)g="\\"+("\\"===n?"":n),i.push(n),r.push("([^"+g+"]+)?"+g+"?");else{const e=void 0!==t?t:l;g="\\"===e?"\\\\\\\\":e.replace(d,"\\\\$&"),i.push(e),r.push("([^"+g+"]+)?"+g+"?")}}));const _=new RegExp("^"+r.join("")+"("+(""===g?".":"[^"+g+"]")+"+)?"+(""===g?"":"["+g+"]*")+"$"),x=a.length-1,S=a.map(((t,n)=>0===n&&!0===e.reverseFillMask?new RegExp("^"+o+"*"+t):n===x?new RegExp("^"+t+"("+(""===b?".":b)+"+)?"+(!0===e.reverseFillMask?"$":o+"*")):new RegExp("^"+t)));v=i,h=t=>{const n=_.exec(!0===e.reverseFillMask?t:t.slice(0,i.length+1));null!==n&&(t=n.slice(1).join(""));const o=[],r=S.length;for(let e=0,a=t;e"string"===typeof e?e:f)).join(""),p=u.split(f).join(n)}function k(t,r,i){const l=a.value,s=l.selectionEnd,c=l.value.length-s,d=A(t);!0===r&&S();const v=C(d),h=!1!==e.fillMask?T(v):v,g=b.value!==h;l.value!==h&&(l.value=h),!0===g&&(b.value=h),document.activeElement===l&&(0,o.Y3)((()=>{if(h!==p)if("insertFromPaste"!==i||!0===e.reverseFillMask)if(["deleteContentBackward","deleteContentForward"].indexOf(i)>-1){const t=!0===e.reverseFillMask?0===s?h.length>v.length?1:0:Math.max(0,h.length-(h===p?0:Math.min(v.length,c)+1))+1:s;l.setSelectionRange(t,t,"forward")}else if(!0===e.reverseFillMask)if(!0===g){const e=Math.max(0,h.length-(h===p?0:Math.min(v.length,c+1)));1===e&&1===s?l.setSelectionRange(e,e,"forward"):E.rightReverse(l,e)}else{const e=h.length-c;l.setSelectionRange(e,e,"backward")}else if(!0===g){const e=Math.max(0,u.indexOf(f),Math.min(v.length,s)-1);E.right(l,e)}else{const e=s-1;E.right(l,e)}else{const e=l.selectionEnd;let t=s-1;for(let n=m;n<=t&&ne.type+e.autogrow),S),(0,o.YP)((()=>e.mask),(n=>{if(void 0!==n)k(b.value,!0);else{const n=A(b.value);S(),e.modelValue!==n&&t("update:modelValue",n)}})),(0,o.YP)((()=>e.fillMask+e.reverseFillMask),(()=>{!0===y.value&&k(b.value,!0)})),(0,o.YP)((()=>e.unmaskedValue),(()=>{!0===y.value&&k(b.value)}));const E={left(e,t){const n=-1===u.slice(t-1).indexOf(f);let o=Math.max(0,t-1);for(;o>=0;o--)if(u[o]===f){t=o,!0===n&&t++;break}if(o<0&&void 0!==u[t]&&u[t]!==f)return E.right(e,0);t>=0&&e.setSelectionRange(t,t,"backward")},right(e,t){const n=e.value.length;let o=Math.min(n,t+1);for(;o<=n;o++){if(u[o]===f){t=o;break}u[o-1]===f&&(t=o)}if(o>n&&void 0!==u[t-1]&&u[t-1]!==f)return E.left(e,n);e.setSelectionRange(t,t,"forward")},leftReverse(e,t){const n=x(e.value.length);let o=Math.max(0,t-1);for(;o>=0;o--){if(n[o-1]===f){t=o;break}if(n[o]===f&&(t=o,0===o))break}if(o<0&&void 0!==n[t]&&n[t]!==f)return E.rightReverse(e,0);t>=0&&e.setSelectionRange(t,t,"backward")},rightReverse(e,t){const n=e.value.length,o=x(n),r=-1===o.slice(0,t+1).indexOf(f);let a=Math.min(n,t+1);for(;a<=n;a++)if(o[a-1]===f){t=a,t>0&&!0===r&&t--;break}if(a>n&&void 0!==o[t-1]&&o[t-1]!==f)return E.leftReverse(e,n);e.setSelectionRange(t,t,"forward")}};function F(e){t("click",e),g=void 0}function q(n){if(t("keydown",n),!0===(0,i.Wm)(n)||!0===n.altKey)return;const o=a.value,r=o.selectionStart,l=o.selectionEnd;if(n.shiftKey||(g=void 0),37===n.keyCode||39===n.keyCode){n.shiftKey&&void 0===g&&(g="forward"===o.selectionDirection?r:l);const t=E[(39===n.keyCode?"right":"left")+(!0===e.reverseFillMask?"Reverse":"")];if(n.preventDefault(),t(o,g===r?l:r),n.shiftKey){const e=o.selectionStart;o.setSelectionRange(Math.min(g,e),Math.max(g,e),"forward")}}else 8===n.keyCode&&!0!==e.reverseFillMask&&r===l?(E.left(o,r),o.setSelectionRange(o.selectionStart,l,"backward")):46===n.keyCode&&!0===e.reverseFillMask&&r===l&&(E.rightReverse(o,l),o.setSelectionRange(r,o.selectionEnd,"forward"))}function C(t){if(void 0===t||null===t||""===t)return"";if(!0===e.reverseFillMask)return R(t);const n=v;let o=0,r="";for(let e=0;e=0&&o>-1;a--){const i=t[a];let l=e[o];if("string"===typeof i)r=i+r,l===i&&o--;else{if(void 0===l||!i.regex.test(l))return r;do{r=(void 0!==i.transform?i.transform(l):l)+r,o--,l=e[o]}while(n===a&&void 0!==l&&i.regex.test(l))}}return r}function A(e){return"string"!==typeof e||void 0===h?"number"===typeof e?h(""+e):e:h(e)}function T(t){return p.length-t.length<=0?t:!0===e.reverseFillMask&&0!==t.length?p.slice(0,-t.length)+t:t+p.slice(t.length)}return{innerValue:b,hasMask:y,moveCursorForPaste:O,updateMaskValue:k,onMaskedKeydown:q,onMaskedClick:F}}var h=n(99256);function m(e,t){function n(){const t=e.modelValue;try{const e="DataTransfer"in window?new DataTransfer:"ClipboardEvent"in window?new ClipboardEvent("").clipboardData:void 0;return Object(t)===t&&("length"in t?Array.from(t):[t]).forEach((t=>{e.items.add(t)})),{files:e.files}}catch(n){return{files:void 0}}}return!0===t?(0,o.Fl)((()=>{if("file"===e.type)return n()})):(0,o.Fl)(n)}var g=n(62802),y=n(65987),b=n(91384),w=n(17026),_=n(43251);const x=(0,y.L)({name:"QInput",inheritAttrs:!1,props:{...a.Cl,...p,...h.Fz,modelValue:{required:!1},shadowText:String,type:{type:String,default:"text"},debounce:[String,Number],autogrow:Boolean,inputClass:[Array,String,Object],inputStyle:[Array,String,Object]},emits:[...a.HJ,"paste","change","keydown","click","animationend"],setup(e,{emit:t,attrs:n}){const{proxy:i}=(0,o.FN)(),{$q:l}=i,s={};let u,c,d,f=NaN,p=null;const y=(0,r.iH)(null),x=(0,h.Do)(e),{innerValue:S,hasMask:k,moveCursorForPaste:O,updateMaskValue:E,onMaskedKeydown:F,onMaskedClick:q}=v(e,t,D,y),C=m(e,!0),R=(0,o.Fl)((()=>(0,a.yV)(S.value))),A=(0,g.Z)(U),T=(0,a.tL)(),j=(0,o.Fl)((()=>"textarea"===e.type||!0===e.autogrow)),B=(0,o.Fl)((()=>!0===j.value||["text","search","url","tel","password"].includes(e.type))),P=(0,o.Fl)((()=>{const t={...T.splitAttrs.listeners.value,onInput:U,onPaste:V,onChange:I,onBlur:Z,onFocus:b.sT};return t.onCompositionstart=t.onCompositionupdate=t.onCompositionend=A,!0===k.value&&(t.onKeydown=F,t.onClick=q),!0===e.autogrow&&(t.onAnimationend=z),t})),L=(0,o.Fl)((()=>{const t={tabindex:0,"data-autofocus":!0===e.autofocus||void 0,rows:"textarea"===e.type?6:void 0,"aria-label":e.label,name:x.value,...T.splitAttrs.attributes.value,id:T.targetUid.value,maxlength:e.maxlength,disabled:!0===e.disable,readonly:!0===e.readonly};return!1===j.value&&(t.type=e.type),!0===e.autogrow&&(t.rows=1),t}));function N(){(0,w.jd)((()=>{const e=document.activeElement;null===y.value||y.value===e||null!==e&&e.id===T.targetUid.value||y.value.focus({preventScroll:!0})}))}function M(){null!==y.value&&y.value.select()}function V(n){if(!0===k.value&&!0!==e.reverseFillMask){const e=n.target;O(e,e.selectionStart,e.selectionEnd)}t("paste",n)}function U(n){if(!n||!n.target)return;if("file"===e.type)return void t("update:modelValue",n.target.files);const r=n.target.value;if(!0!==n.target.qComposing){if(!0===k.value)E(r,!1,n.inputType);else if(D(r),!0===B.value&&n.target===document.activeElement){const{selectionStart:e,selectionEnd:t}=n.target;void 0!==e&&void 0!==t&&(0,o.Y3)((()=>{n.target===document.activeElement&&0===r.indexOf(n.target.value)&&n.target.setSelectionRange(e,t)}))}!0===e.autogrow&&$()}else s.value=r}function z(e){t("animationend",e),$()}function D(n,r){d=()=>{p=null,"number"!==e.type&&!0===s.hasOwnProperty("value")&&delete s.value,e.modelValue!==n&&f!==n&&(f=n,!0===r&&(c=!0),t("update:modelValue",n),(0,o.Y3)((()=>{f===n&&(f=NaN)}))),d=void 0},"number"===e.type&&(u=!0,s.value=n),void 0!==e.debounce?(null!==p&&clearTimeout(p),s.value=n,p=setTimeout(d,e.debounce)):d()}function $(){requestAnimationFrame((()=>{const e=y.value;if(null!==e){const t=e.parentNode.style,{scrollTop:n}=e,{overflowY:o,maxHeight:r}=!0===l.platform.is.firefox?{}:window.getComputedStyle(e),a=void 0!==o&&"scroll"!==o;!0===a&&(e.style.overflowY="hidden"),t.marginBottom=e.scrollHeight-1+"px",e.style.height="1px",e.style.height=e.scrollHeight+"px",!0===a&&(e.style.overflowY=parseInt(r,10){null!==y.value&&(y.value.value=void 0!==S.value?S.value:"")}))}function H(){return!0===s.hasOwnProperty("value")?s.value:void 0!==S.value?S.value:""}(0,o.YP)((()=>e.type),(()=>{y.value&&(y.value.value=e.modelValue)})),(0,o.YP)((()=>e.modelValue),(t=>{if(!0===k.value){if(!0===c&&(c=!1,String(t)===f))return;E(t)}else S.value!==t&&(S.value=t,"number"===e.type&&!0===s.hasOwnProperty("value")&&(!0===u?u=!1:delete s.value));!0===e.autogrow&&(0,o.Y3)($)})),(0,o.YP)((()=>e.autogrow),(e=>{!0===e?(0,o.Y3)($):null!==y.value&&n.rows>0&&(y.value.style.height="auto")})),(0,o.YP)((()=>e.dense),(()=>{!0===e.autogrow&&(0,o.Y3)($)})),(0,o.Jd)((()=>{Z()})),(0,o.bv)((()=>{!0===e.autogrow&&$()})),Object.assign(T,{innerValue:S,fieldClass:(0,o.Fl)((()=>"q-"+(!0===j.value?"textarea":"input")+(!0===e.autogrow?" q-textarea--autogrow":""))),hasShadow:(0,o.Fl)((()=>"file"!==e.type&&"string"===typeof e.shadowText&&0!==e.shadowText.length)),inputRef:y,emitValue:D,hasValue:R,floatingLabel:(0,o.Fl)((()=>!0===R.value&&("number"!==e.type||!1===isNaN(S.value))||(0,a.yV)(e.displayValue))),getControl:()=>(0,o.h)(!0===j.value?"textarea":"input",{ref:y,class:["q-field__native q-placeholder",e.inputClass],style:e.inputStyle,...L.value,...P.value,..."file"!==e.type?{value:H()}:C.value}),getShadowControl:()=>(0,o.h)("div",{class:"q-field__native q-field__shadow absolute-bottom no-pointer-events"+(!0===j.value?"":" text-no-wrap")},[(0,o.h)("span",{class:"invisible"},H()),(0,o.h)("span",e.shadowText)])});const K=(0,a.ZP)(T);return Object.assign(i,{focus:N,select:M,getNativeElement:()=>y.value}),(0,_.g)(i,"nativeEl",(()=>y.value)),K}})},50926:(e,t,n)=>{n.d(t,{Z:()=>s});var o=n(59835),r=n(68234),a=n(65987);const i={true:"inset",item:"item-inset","item-thumbnail":"item-thumbnail-inset"},l={xs:2,sm:4,md:8,lg:16,xl:24},s=(0,a.L)({name:"QSeparator",props:{...r.S,spaced:[Boolean,String],inset:[Boolean,String],vertical:Boolean,color:String,size:String},setup(e){const t=(0,o.FN)(),n=(0,r.Z)(e,t.proxy.$q),a=(0,o.Fl)((()=>!0===e.vertical?"vertical":"horizontal")),s=(0,o.Fl)((()=>` q-separator--${a.value}`)),u=(0,o.Fl)((()=>!1!==e.inset?`${s.value}-${i[e.inset]}`:"")),c=(0,o.Fl)((()=>`q-separator${s.value}${u.value}`+(void 0!==e.color?` bg-${e.color}`:"")+(!0===n.value?" q-separator--dark":""))),d=(0,o.Fl)((()=>{const t={};if(void 0!==e.size&&(t[!0===e.vertical?"width":"height"]=e.size),!1!==e.spaced){const n=!0===e.spaced?`${l.md}px`:e.spaced in l?`${l[e.spaced]}px`:e.spaced,o=!0===e.vertical?["Left","Right"]:["Top","Bottom"];t[`margin${o[0]}`]=t[`margin${o[1]}`]=n}return t}));return()=>(0,o.h)("hr",{class:c.value,style:d.value,"aria-orientation":a.value})}})},63940:(e,t,n)=>{n.d(t,{Z:()=>s});var o=n(59835),r=n(20244);const a={size:{type:[Number,String],default:"1em"},color:String};function i(e){return{cSize:(0,o.Fl)((()=>e.size in r.Ok?`${r.Ok[e.size]}px`:e.size)),classes:(0,o.Fl)((()=>"q-spinner"+(e.color?` text-${e.color}`:"")))}}var l=n(65987);const s=(0,l.L)({name:"QSpinner",props:{...a,thickness:{type:Number,default:5}},setup(e){const{cSize:t,classes:n}=i(e);return()=>(0,o.h)("svg",{class:n.value+" q-spinner-mat",width:t.value,height:t.value,viewBox:"25 25 50 50"},[(0,o.h)("circle",{class:"path",cx:"50",cy:"50",r:"20",fill:"none",stroke:"currentColor","stroke-width":e.thickness,"stroke-miterlimit":"10"})])}})},65065:(e,t,n)=>{n.d(t,{ZP:()=>l,jO:()=>i});var o=n(59835);const r={left:"start",center:"center",right:"end",between:"between",around:"around",evenly:"evenly",stretch:"stretch"},a=Object.keys(r),i={align:{type:String,validator:e=>a.includes(e)}};function l(e){return(0,o.Fl)((()=>{const t=void 0===e.align?!0===e.vertical?"stretch":"left":e.align;return`${!0===e.vertical?"items":"justify"}-${r[t]}`}))}},68234:(e,t,n)=>{n.d(t,{S:()=>r,Z:()=>a});var o=n(59835);const r={dark:{type:Boolean,default:null}};function a(e,t){return(0,o.Fl)((()=>null===e.dark?t.dark.isActive:e.dark))}},16762:(e,t,n)=>{n.d(t,{Cl:()=>y,HJ:()=>b,ZP:()=>_,tL:()=>w,yV:()=>g});n(72879);var o=n(59835),r=n(60499),a=n(61957),i=n(47506),l=n(22857),s=n(63940),u=n(68234),c=n(44514),d=n(45607),f=n(22026),p=n(50796),v=n(91384),h=n(17026);function m(e){return void 0===e?`f_${(0,p.Z)()}`:e}function g(e){return void 0!==e&&null!==e&&0!==(""+e).length}const y={...u.S,...c.G,label:String,stackLabel:Boolean,hint:String,hideHint:Boolean,prefix:String,suffix:String,labelColor:String,color:String,bgColor:String,filled:Boolean,outlined:Boolean,borderless:Boolean,standout:[Boolean,String],square:Boolean,loading:Boolean,labelSlot:Boolean,bottomSlots:Boolean,hideBottomSpace:Boolean,rounded:Boolean,dense:Boolean,itemAligned:Boolean,counter:Boolean,clearable:Boolean,clearIcon:String,disable:Boolean,readonly:Boolean,autofocus:Boolean,for:String,maxlength:[Number,String]},b=["update:modelValue","clear","focus","blur","popupShow","popupHide"];function w(){const{props:e,attrs:t,proxy:n,vnode:a}=(0,o.FN)(),i=(0,u.Z)(e,n.$q);return{isDark:i,editable:(0,o.Fl)((()=>!0!==e.disable&&!0!==e.readonly)),innerLoading:(0,r.iH)(!1),focused:(0,r.iH)(!1),hasPopupOpen:!1,splitAttrs:(0,d.Z)(t,a),targetUid:(0,r.iH)(m(e.for)),rootRef:(0,r.iH)(null),targetRef:(0,r.iH)(null),controlRef:(0,r.iH)(null)}}function _(e){const{props:t,emit:n,slots:r,attrs:u,proxy:d}=(0,o.FN)(),{$q:p}=d;let y=null;void 0===e.hasValue&&(e.hasValue=(0,o.Fl)((()=>g(t.modelValue)))),void 0===e.emitValue&&(e.emitValue=e=>{n("update:modelValue",e)}),void 0===e.controlEvents&&(e.controlEvents={onFocusin:L,onFocusout:N}),Object.assign(e,{clearValue:M,onControlFocusin:L,onControlFocusout:N,focus:B}),void 0===e.computedCounter&&(e.computedCounter=(0,o.Fl)((()=>{if(!1!==t.counter){const e="string"===typeof t.modelValue||"number"===typeof t.modelValue?(""+t.modelValue).length:!0===Array.isArray(t.modelValue)?t.modelValue.length:0,n=void 0!==t.maxlength?t.maxlength:t.maxValues;return e+(void 0!==n?" / "+n:"")}})));const{isDirtyModel:b,hasRules:w,hasError:_,errorMessage:x,resetValidation:S}=(0,c.Z)(e.focused,e.innerLoading),k=void 0!==e.floatingLabel?(0,o.Fl)((()=>!0===t.stackLabel||!0===e.focused.value||!0===e.floatingLabel.value)):(0,o.Fl)((()=>!0===t.stackLabel||!0===e.focused.value||!0===e.hasValue.value)),O=(0,o.Fl)((()=>!0===t.bottomSlots||void 0!==t.hint||!0===w.value||!0===t.counter||null!==t.error)),E=(0,o.Fl)((()=>!0===t.filled?"filled":!0===t.outlined?"outlined":!0===t.borderless?"borderless":t.standout?"standout":"standard")),F=(0,o.Fl)((()=>`q-field row no-wrap items-start q-field--${E.value}`+(void 0!==e.fieldClass?` ${e.fieldClass.value}`:"")+(!0===t.rounded?" q-field--rounded":"")+(!0===t.square?" q-field--square":"")+(!0===k.value?" q-field--float":"")+(!0===C.value?" q-field--labeled":"")+(!0===t.dense?" q-field--dense":"")+(!0===t.itemAligned?" q-field--item-aligned q-item-type":"")+(!0===e.isDark.value?" q-field--dark":"")+(void 0===e.getControl?" q-field--auto-height":"")+(!0===e.focused.value?" q-field--focused":"")+(!0===_.value?" q-field--error":"")+(!0===_.value||!0===e.focused.value?" q-field--highlighted":"")+(!0!==t.hideBottomSpace&&!0===O.value?" q-field--with-bottom":"")+(!0===t.disable?" q-field--disabled":!0===t.readonly?" q-field--readonly":""))),q=(0,o.Fl)((()=>"q-field__control relative-position row no-wrap"+(void 0!==t.bgColor?` bg-${t.bgColor}`:"")+(!0===_.value?" text-negative":"string"===typeof t.standout&&0!==t.standout.length&&!0===e.focused.value?` ${t.standout}`:void 0!==t.color?` text-${t.color}`:""))),C=(0,o.Fl)((()=>!0===t.labelSlot||void 0!==t.label)),R=(0,o.Fl)((()=>"q-field__label no-pointer-events absolute ellipsis"+(void 0!==t.labelColor&&!0!==_.value?` text-${t.labelColor}`:""))),A=(0,o.Fl)((()=>({id:e.targetUid.value,editable:e.editable.value,focused:e.focused.value,floatingLabel:k.value,modelValue:t.modelValue,emitValue:e.emitValue}))),T=(0,o.Fl)((()=>{const n={for:e.targetUid.value};return!0===t.disable?n["aria-disabled"]="true":!0===t.readonly&&(n["aria-readonly"]="true"),n}));function j(){const t=document.activeElement;let n=void 0!==e.targetRef&&e.targetRef.value;!n||null!==t&&t.id===e.targetUid.value||(!0===n.hasAttribute("tabindex")||(n=n.querySelector("[tabindex]")),n&&n!==t&&n.focus({preventScroll:!0}))}function B(){(0,h.jd)(j)}function P(){(0,h.fP)(j);const t=document.activeElement;null!==t&&e.rootRef.value.contains(t)&&t.blur()}function L(t){null!==y&&(clearTimeout(y),y=null),!0===e.editable.value&&!1===e.focused.value&&(e.focused.value=!0,n("focus",t))}function N(t,o){null!==y&&clearTimeout(y),y=setTimeout((()=>{y=null,(!0!==document.hasFocus()||!0!==e.hasPopupOpen&&void 0!==e.controlRef&&null!==e.controlRef.value&&!1===e.controlRef.value.contains(document.activeElement))&&(!0===e.focused.value&&(e.focused.value=!1,n("blur",t)),void 0!==o&&o())}))}function M(r){if((0,v.NS)(r),!0!==p.platform.is.mobile){const t=void 0!==e.targetRef&&e.targetRef.value||e.rootRef.value;t.focus()}else!0===e.rootRef.value.contains(document.activeElement)&&document.activeElement.blur();"file"===t.type&&(e.inputRef.value.value=null),n("update:modelValue",null),n("clear",t.modelValue),(0,o.Y3)((()=>{S(),!0!==p.platform.is.mobile&&(b.value=!1)}))}function V(){const n=[];return void 0!==r.prepend&&n.push((0,o.h)("div",{class:"q-field__prepend q-field__marginal row no-wrap items-center",key:"prepend",onClick:v.X$},r.prepend())),n.push((0,o.h)("div",{class:"q-field__control-container col relative-position row no-wrap q-anchor--skip"},U())),!0===_.value&&!1===t.noErrorIcon&&n.push(D("error",[(0,o.h)(l.Z,{name:p.iconSet.field.error,color:"negative"})])),!0===t.loading||!0===e.innerLoading.value?n.push(D("inner-loading-append",void 0!==r.loading?r.loading():[(0,o.h)(s.Z,{color:t.color})])):!0===t.clearable&&!0===e.hasValue.value&&!0===e.editable.value&&n.push(D("inner-clearable-append",[(0,o.h)(l.Z,{class:"q-field__focusable-action",tag:"button",name:t.clearIcon||p.iconSet.field.clear,tabindex:0,type:"button","aria-hidden":null,role:null,onClick:M})])),void 0!==r.append&&n.push((0,o.h)("div",{class:"q-field__append q-field__marginal row no-wrap items-center",key:"append",onClick:v.X$},r.append())),void 0!==e.getInnerAppend&&n.push(D("inner-append",e.getInnerAppend())),void 0!==e.getControlChild&&n.push(e.getControlChild()),n}function U(){const n=[];return void 0!==t.prefix&&null!==t.prefix&&n.push((0,o.h)("div",{class:"q-field__prefix no-pointer-events row items-center"},t.prefix)),void 0!==e.getShadowControl&&!0===e.hasShadow.value&&n.push(e.getShadowControl()),void 0!==e.getControl?n.push(e.getControl()):void 0!==r.rawControl?n.push(r.rawControl()):void 0!==r.control&&n.push((0,o.h)("div",{ref:e.targetRef,class:"q-field__native row",tabindex:-1,...e.splitAttrs.attributes.value,"data-autofocus":!0===t.autofocus||void 0},r.control(A.value))),!0===C.value&&n.push((0,o.h)("div",{class:R.value},(0,f.KR)(r.label,t.label))),void 0!==t.suffix&&null!==t.suffix&&n.push((0,o.h)("div",{class:"q-field__suffix no-pointer-events row items-center"},t.suffix)),n.concat((0,f.KR)(r.default))}function z(){let n,i;!0===_.value?null!==x.value?(n=[(0,o.h)("div",{role:"alert"},x.value)],i=`q--slot-error-${x.value}`):(n=(0,f.KR)(r.error),i="q--slot-error"):!0===t.hideHint&&!0!==e.focused.value||(void 0!==t.hint?(n=[(0,o.h)("div",t.hint)],i=`q--slot-hint-${t.hint}`):(n=(0,f.KR)(r.hint),i="q--slot-hint"));const l=!0===t.counter||void 0!==r.counter;if(!0===t.hideBottomSpace&&!1===l&&void 0===n)return;const s=(0,o.h)("div",{key:i,class:"q-field__messages col"},n);return(0,o.h)("div",{class:"q-field__bottom row items-start q-field__bottom--"+(!0!==t.hideBottomSpace?"animated":"stale"),onClick:v.X$},[!0===t.hideBottomSpace?s:(0,o.h)(a.uT,{name:"q-transition--field-message"},(()=>s)),!0===l?(0,o.h)("div",{class:"q-field__counter"},void 0!==r.counter?r.counter():e.computedCounter.value):null])}function D(e,t){return null===t?null:(0,o.h)("div",{key:e,class:"q-field__append q-field__marginal row no-wrap items-center q-anchor--skip"},t)}(0,o.YP)((()=>t.for),(t=>{e.targetUid.value=m(t)}));let $=!1;return(0,o.se)((()=>{$=!0})),(0,o.dl)((()=>{!0===$&&!0===t.autofocus&&d.focus()})),(0,o.bv)((()=>{!0===i.uX.value&&void 0===t.for&&(e.targetUid.value=m()),!0===t.autofocus&&d.focus()})),(0,o.Jd)((()=>{null!==y&&clearTimeout(y)})),Object.assign(d,{focus:B,blur:P}),function(){const n=void 0===e.getControl&&void 0===r.control?{...e.splitAttrs.attributes.value,"data-autofocus":!0===t.autofocus||void 0,...T.value}:T.value;return(0,o.h)("label",{ref:e.rootRef,class:[F.value,u.class],style:u.style,...n},[void 0!==r.before?(0,o.h)("div",{class:"q-field__before q-field__marginal row no-wrap items-center",onClick:v.X$},r.before()):null,(0,o.h)("div",{class:"q-field__inner relative-position col self-stretch"},[(0,o.h)("div",{ref:e.controlRef,class:q.value,tabindex:-1,...e.controlEvents},V()),!0===O.value?z():null]),void 0!==r.after?(0,o.h)("div",{class:"q-field__after q-field__marginal row no-wrap items-center",onClick:v.X$},r.after()):null])}}},85448:(e,t,n)=>{n.d(t,{Z:()=>o});const o={name:"material-icons",type:{positive:"check_circle",negative:"warning",info:"info",warning:"priority_high"},arrow:{up:"arrow_upward",right:"arrow_forward",down:"arrow_downward",left:"arrow_back",dropdown:"arrow_drop_down"},chevron:{left:"chevron_left",right:"chevron_right"},colorPicker:{spectrum:"gradient",tune:"tune",palette:"style"},pullToRefresh:{icon:"refresh"},carousel:{left:"chevron_left",right:"chevron_right",up:"keyboard_arrow_up",down:"keyboard_arrow_down",navigationIcon:"lens"},chip:{remove:"cancel",selected:"check"},datetime:{arrowLeft:"chevron_left",arrowRight:"chevron_right",now:"access_time",today:"today"},editor:{bold:"format_bold",italic:"format_italic",strikethrough:"strikethrough_s",underline:"format_underlined",unorderedList:"format_list_bulleted",orderedList:"format_list_numbered",subscript:"vertical_align_bottom",superscript:"vertical_align_top",hyperlink:"link",toggleFullscreen:"fullscreen",quote:"format_quote",left:"format_align_left",center:"format_align_center",right:"format_align_right",justify:"format_align_justify",print:"print",outdent:"format_indent_decrease",indent:"format_indent_increase",removeFormat:"format_clear",formatting:"text_format",fontSize:"format_size",align:"format_align_left",hr:"remove",undo:"undo",redo:"redo",heading:"format_size",code:"code",size:"format_size",font:"font_download",viewSource:"code"},expansionItem:{icon:"keyboard_arrow_down",denseIcon:"arrow_drop_down"},fab:{icon:"add",activeIcon:"close"},field:{clear:"cancel",error:"error"},pagination:{first:"first_page",prev:"keyboard_arrow_left",next:"keyboard_arrow_right",last:"last_page"},rating:{icon:"grade"},stepper:{done:"check",active:"edit",error:"warning"},tabs:{left:"chevron_left",right:"chevron_right",up:"keyboard_arrow_up",down:"keyboard_arrow_down"},table:{arrowUp:"arrow_upward",warning:"warning",firstPage:"first_page",prevPage:"chevron_left",nextPage:"chevron_right",lastPage:"last_page"},tree:{icon:"play_arrow"},uploader:{done:"done",clear:"clear",add:"add_box",upload:"cloud_upload",removeQueue:"clear_all",removeUploaded:"done_all"}}},99527:(e,t,n)=>{n.d(t,{Z:()=>o});const o={isoName:"en-US",nativeName:"English (US)",label:{clear:"Clear",ok:"OK",cancel:"Cancel",close:"Close",set:"Set",select:"Select",reset:"Reset",remove:"Remove",update:"Update",create:"Create",search:"Search",filter:"Filter",refresh:"Refresh",expand:e=>e?`Expand "${e}"`:"Expand",collapse:e=>e?`Collapse "${e}"`:"Collapse"},date:{days:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),daysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),firstDayOfWeek:0,format24h:!1,pluralDay:"days"},table:{noData:"No data available",noResults:"No matching records found",loading:"Loading...",selectedRecords:e=>1===e?"1 record selected.":(0===e?"No":e)+" records selected.",recordsPerPage:"Records per page:",allRows:"All",pagination:(e,t,n)=>e+"-"+t+" of "+n,columns:"Columns"},editor:{url:"URL",bold:"Bold",italic:"Italic",strikethrough:"Strikethrough",underline:"Underline",unorderedList:"Unordered List",orderedList:"Ordered List",subscript:"Subscript",superscript:"Superscript",hyperlink:"Hyperlink",toggleFullscreen:"Toggle Fullscreen",quote:"Quote",left:"Left align",center:"Center align",right:"Right align",justify:"Justify align",print:"Print",outdent:"Decrease indentation",indent:"Increase indentation",removeFormat:"Remove formatting",formatting:"Formatting",fontSize:"Font Size",align:"Align",hr:"Insert Horizontal Rule",undo:"Undo",redo:"Redo",heading1:"Heading 1",heading2:"Heading 2",heading3:"Heading 3",heading4:"Heading 4",heading5:"Heading 5",heading6:"Heading 6",paragraph:"Paragraph",code:"Code",size1:"Very small",size2:"A bit small",size3:"Normal",size4:"Medium-large",size5:"Big",size6:"Very big",size7:"Maximum",defaultFont:"Default Font",viewSource:"View Source"},tree:{noNodes:"No nodes available",noResults:"No matching nodes found"}}},88880:(e,t,n)=>{n.d(t,{Z:()=>o});const o={isoName:"zh-CN",nativeName:"中文(简体)",label:{clear:"清空",ok:"确定",cancel:"取消",close:"关闭",set:"设置",select:"选择",reset:"重置",remove:"移除",update:"更新",create:"创建",search:"搜索",filter:"过滤",refresh:"刷新",expand:e=>e?`展开"${e}"`:"扩张",collapse:e=>e?`折叠"${e}"`:"坍塌"},date:{days:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),daysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),headerTitle:e=>new Intl.DateTimeFormat("zh-CN",{weekday:"short",month:"short",day:"numeric"}).format(e),firstDayOfWeek:0,format24h:!1,pluralDay:"天"},table:{noData:"没有可用数据",noResults:"找不到匹配的数据",loading:"正在加载...",selectedRecords:e=>"已选择"+e+"行",recordsPerPage:"每页的行数:",allRows:"全部",pagination:(e,t,n)=>e+"-"+t+" / "+n,columns:"列"},editor:{url:"URL",bold:"粗体",italic:"斜体",strikethrough:"删除线",underline:"下划线",unorderedList:"无序列表",orderedList:"有序列表",subscript:"下标",superscript:"上标",hyperlink:"超链接",toggleFullscreen:"全屏切换",quote:"引号",left:"左对齐",center:"居中对齐",right:"右对齐",justify:"两端对齐",print:"打印",outdent:"减少缩进",indent:"增加缩进",removeFormat:"清除样式",formatting:"格式化",fontSize:"字体大小",align:"对齐",hr:"插入水平线",undo:"撤消",redo:"重做",heading1:"标题一",heading2:"标题二",heading3:"标题三",heading4:"标题四",heading5:"标题五",heading6:"标题六",paragraph:"段落",code:"代码",size1:"非常小",size2:"比较小",size3:"正常",size4:"中等偏大",size5:"大",size6:"非常大",size7:"超级大",defaultFont:"默认字体",viewSource:"查看资料"},tree:{noNodes:"没有可用节点",noResults:"找不到匹配的节点"}}},61831:(e,t,n)=>{var o=n(1169),r=n(31927),a=TypeError;e.exports=function(e){if(o(e))return e;throw new a(r(e)+" is not a function")}},97310:(e,t,n)=>{var o=n(1169),r=String,a=TypeError;e.exports=function(e){if("object"==typeof e||o(e))return e;throw new a("Can't set "+r(e)+" as a prototype")}},85552:(e,t,n)=>{var o=n(6167),r=String,a=TypeError;e.exports=function(e){if(o(e))return e;throw new a(r(e)+" is not an object")}},10948:e=>{e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},92831:(e,t,n)=>{var o,r,a,i=n(10948),l=n(98593),s=n(78826),u=n(1169),c=n(6167),d=n(25464),f=n(4236),p=n(31927),v=n(230),h=n(81775),m=n(8329),g=n(63990),y=n(39943),b=n(48794),w=n(57324),_=n(38035),x=n(23530),S=x.enforce,k=x.get,O=s.Int8Array,E=O&&O.prototype,F=s.Uint8ClampedArray,q=F&&F.prototype,C=O&&y(O),R=E&&y(E),A=Object.prototype,T=s.TypeError,j=w("toStringTag"),B=_("TYPED_ARRAY_TAG"),P="TypedArrayConstructor",L=i&&!!b&&"Opera"!==f(s.opera),N=!1,M={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},V={BigInt64Array:8,BigUint64Array:8},U=function(e){if(!c(e))return!1;var t=f(e);return"DataView"===t||d(M,t)||d(V,t)},z=function(e){var t=y(e);if(c(t)){var n=k(t);return n&&d(n,P)?n[P]:z(t)}},D=function(e){if(!c(e))return!1;var t=f(e);return d(M,t)||d(V,t)},$=function(e){if(D(e))return e;throw new T("Target is not a typed array")},I=function(e){if(u(e)&&(!b||g(C,e)))return e;throw new T(p(e)+" is not a typed array constructor")},Z=function(e,t,n,o){if(l){if(n)for(var r in M){var a=s[r];if(a&&d(a.prototype,e))try{delete a.prototype[e]}catch(i){try{a.prototype[e]=t}catch(u){}}}R[e]&&!n||h(R,e,n?t:L&&E[e]||t,o)}},H=function(e,t,n){var o,r;if(l){if(b){if(n)for(o in M)if(r=s[o],r&&d(r,e))try{delete r[e]}catch(a){}if(C[e]&&!n)return;try{return h(C,e,n?t:L&&C[e]||t)}catch(a){}}for(o in M)r=s[o],!r||r[e]&&!n||h(r,e,t)}};for(o in M)r=s[o],a=r&&r.prototype,a?S(a)[P]=r:L=!1;for(o in V)r=s[o],a=r&&r.prototype,a&&(S(a)[P]=r);if((!L||!u(C)||C===Function.prototype)&&(C=function(){throw new T("Incorrect invocation")},L))for(o in M)s[o]&&b(s[o],C);if((!L||!R||R===A)&&(R=C.prototype,L))for(o in M)s[o]&&b(s[o].prototype,R);if(L&&y(q)!==R&&b(q,R),l&&!d(R,j))for(o in N=!0,m(R,j,{configurable:!0,get:function(){return c(this)?this[B]:void 0}}),M)s[o]&&v(s[o],B,o);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:L,TYPED_ARRAY_TAG:N&&B,aTypedArray:$,aTypedArrayConstructor:I,exportTypedArrayMethod:Z,exportTypedArrayStaticMethod:H,getTypedArrayConstructor:z,isView:U,isTypedArray:D,TypedArray:C,TypedArrayPrototype:R}},7381:(e,t,n)=>{var o=n(12035);e.exports=function(e,t){var n=0,r=o(t),a=new e(r);while(r>n)a[n]=t[n++];return a}},14137:(e,t,n)=>{var o=n(59019),r=n(68794),a=n(12035),i=function(e){return function(t,n,i){var l,s=o(t),u=a(s),c=r(i,u);if(e&&n!==n){while(u>c)if(l=s[c++],l!==l)return!0}else for(;u>c;c++)if((e||c in s)&&s[c]===n)return e||c||0;return!e&&-1}};e.exports={includes:i(!0),indexOf:i(!1)}},41084:(e,t,n)=>{var o=n(98593),r=n(82898),a=TypeError,i=Object.getOwnPropertyDescriptor,l=o&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=l?function(e,t){if(r(e)&&!i(e,"length").writable)throw new a("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},98048:(e,t,n)=>{var o=n(12035);e.exports=function(e,t){for(var n=o(e),r=new t(n),a=0;a{var o=n(12035),r=n(25822),a=RangeError;e.exports=function(e,t,n,i){var l=o(e),s=r(n),u=s<0?l+s:s;if(u>=l||u<0)throw new a("Incorrect index");for(var c=new t(l),d=0;d{var o=n(87481),r=o({}.toString),a=o("".slice);e.exports=function(e){return a(r(e),8,-1)}},4236:(e,t,n)=>{var o=n(1033),r=n(1169),a=n(48583),i=n(57324),l=i("toStringTag"),s=Object,u="Arguments"===a(function(){return arguments}()),c=function(e,t){try{return e[t]}catch(n){}};e.exports=o?a:function(e){var t,n,o;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=c(t=s(e),l))?n:u?a(t):"Object"===(o=a(t))&&r(t.callee)?"Arguments":o}},68202:(e,t,n)=>{var o=n(25464),r=n(55664),a=n(86169),i=n(91274);e.exports=function(e,t,n){for(var l=r(t),s=i.f,u=a.f,c=0;c{var o=n(26082);e.exports=!o((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},230:(e,t,n)=>{var o=n(98593),r=n(91274),a=n(44542);e.exports=o?function(e,t,n){return r.f(e,t,a(1,n))}:function(e,t,n){return e[t]=n,e}},44542:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},8329:(e,t,n)=>{var o=n(64589),r=n(91274);e.exports=function(e,t,n){return n.get&&o(n.get,t,{getter:!0}),n.set&&o(n.set,t,{setter:!0}),r.f(e,t,n)}},81775:(e,t,n)=>{var o=n(1169),r=n(91274),a=n(64589),i=n(52130);e.exports=function(e,t,n,l){l||(l={});var s=l.enumerable,u=void 0!==l.name?l.name:t;if(o(n)&&a(n,u,l),l.global)s?e[t]=n:i(t,n);else{try{l.unsafe?e[t]&&(s=!0):delete e[t]}catch(c){}s?e[t]=n:r.f(e,t,{value:n,enumerable:!1,configurable:!l.nonConfigurable,writable:!l.nonWritable})}return e}},52130:(e,t,n)=>{var o=n(78826),r=Object.defineProperty;e.exports=function(e,t){try{r(o,e,{value:t,configurable:!0,writable:!0})}catch(n){o[e]=t}return t}},12578:(e,t,n)=>{var o=n(31927),r=TypeError;e.exports=function(e,t){if(!delete e[t])throw new r("Cannot delete property "+o(t)+" of "+o(e))}},98593:(e,t,n)=>{var o=n(26082);e.exports=!o((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},69867:e=>{var t="object"==typeof document&&document.all,n="undefined"==typeof t&&void 0!==t;e.exports={all:t,IS_HTMLDDA:n}},53040:(e,t,n)=>{var o=n(78826),r=n(6167),a=o.document,i=r(a)&&r(a.createElement);e.exports=function(e){return i?a.createElement(e):{}}},23245:e=>{var t=TypeError,n=9007199254740991;e.exports=function(e){if(e>n)throw t("Maximum allowed index exceeded");return e}},10013:e=>{e.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},92470:(e,t,n)=>{var o,r,a=n(78826),i=n(10013),l=a.process,s=a.Deno,u=l&&l.versions||s&&s.version,c=u&&u.v8;c&&(o=c.split("."),r=o[0]>0&&o[0]<4?1:+(o[0]+o[1])),!r&&i&&(o=i.match(/Edge\/(\d+)/),(!o||o[1]>=74)&&(o=i.match(/Chrome\/(\d+)/),o&&(r=+o[1]))),e.exports=r},36923:e=>{e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},78576:(e,t,n)=>{var o=n(78826),r=n(86169).f,a=n(230),i=n(81775),l=n(52130),s=n(68202),u=n(66719);e.exports=function(e,t){var n,c,d,f,p,v,h=e.target,m=e.global,g=e.stat;if(c=m?o:g?o[h]||l(h,{}):(o[h]||{}).prototype,c)for(d in t){if(p=t[d],e.dontCallGetSet?(v=r(c,d),f=v&&v.value):f=c[d],n=u(m?d:h+(g?".":"#")+d,e.forced),!n&&void 0!==f){if(typeof p==typeof f)continue;s(p,f)}(e.sham||f&&f.sham)&&a(p,"sham",!0),i(c,d,p,e)}}},26082:e=>{e.exports=function(e){try{return!!e()}catch(t){return!0}}},22555:(e,t,n)=>{var o=n(26082);e.exports=!o((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},71991:(e,t,n)=>{var o=n(22555),r=Function.prototype.call;e.exports=o?r.bind(r):function(){return r.apply(r,arguments)}},40415:(e,t,n)=>{var o=n(98593),r=n(25464),a=Function.prototype,i=o&&Object.getOwnPropertyDescriptor,l=r(a,"name"),s=l&&"something"===function(){}.name,u=l&&(!o||o&&i(a,"name").configurable);e.exports={EXISTS:l,PROPER:s,CONFIGURABLE:u}},74796:(e,t,n)=>{var o=n(87481),r=n(61831);e.exports=function(e,t,n){try{return o(r(Object.getOwnPropertyDescriptor(e,t)[n]))}catch(a){}}},87481:(e,t,n)=>{var o=n(22555),r=Function.prototype,a=r.call,i=o&&r.bind.bind(a,a);e.exports=o?i:function(e){return function(){return a.apply(e,arguments)}}},56172:(e,t,n)=>{var o=n(78826),r=n(1169),a=function(e){return r(e)?e:void 0};e.exports=function(e,t){return arguments.length<2?a(o[e]):o[e]&&o[e][t]}},12710:(e,t,n)=>{var o=n(61831),r=n(96231);e.exports=function(e,t){var n=e[t];return r(n)?void 0:o(n)}},78826:function(e,t,n){var o=function(e){return e&&e.Math===Math&&e};e.exports=o("object"==typeof globalThis&&globalThis)||o("object"==typeof window&&window)||o("object"==typeof self&&self)||o("object"==typeof n.g&&n.g)||function(){return this}()||this||Function("return this")()},25464:(e,t,n)=>{var o=n(87481),r=n(42730),a=o({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return a(r(e),t)}},71599:e=>{e.exports={}},93604:(e,t,n)=>{var o=n(98593),r=n(26082),a=n(53040);e.exports=!o&&!r((function(){return 7!==Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a}))},78362:(e,t,n)=>{var o=n(87481),r=n(26082),a=n(48583),i=Object,l=o("".split);e.exports=r((function(){return!i("z").propertyIsEnumerable(0)}))?function(e){return"String"===a(e)?l(e,""):i(e)}:i},39966:(e,t,n)=>{var o=n(87481),r=n(1169),a=n(30301),i=o(Function.toString);r(a.inspectSource)||(a.inspectSource=function(e){return i(e)}),e.exports=a.inspectSource},23530:(e,t,n)=>{var o,r,a,i=n(72831),l=n(78826),s=n(6167),u=n(230),c=n(25464),d=n(30301),f=n(35883),p=n(71599),v="Object already initialized",h=l.TypeError,m=l.WeakMap,g=function(e){return a(e)?r(e):o(e,{})},y=function(e){return function(t){var n;if(!s(t)||(n=r(t)).type!==e)throw new h("Incompatible receiver, "+e+" required");return n}};if(i||d.state){var b=d.state||(d.state=new m);b.get=b.get,b.has=b.has,b.set=b.set,o=function(e,t){if(b.has(e))throw new h(v);return t.facade=e,b.set(e,t),t},r=function(e){return b.get(e)||{}},a=function(e){return b.has(e)}}else{var w=f("state");p[w]=!0,o=function(e,t){if(c(e,w))throw new h(v);return t.facade=e,u(e,w,t),t},r=function(e){return c(e,w)?e[w]:{}},a=function(e){return c(e,w)}}e.exports={set:o,get:r,has:a,enforce:g,getterFor:y}},82898:(e,t,n)=>{var o=n(48583);e.exports=Array.isArray||function(e){return"Array"===o(e)}},94218:(e,t,n)=>{var o=n(4236);e.exports=function(e){var t=o(e);return"BigInt64Array"===t||"BigUint64Array"===t}},1169:(e,t,n)=>{var o=n(69867),r=o.all;e.exports=o.IS_HTMLDDA?function(e){return"function"==typeof e||e===r}:function(e){return"function"==typeof e}},66719:(e,t,n)=>{var o=n(26082),r=n(1169),a=/#|\.prototype\./,i=function(e,t){var n=s[l(e)];return n===c||n!==u&&(r(t)?o(t):!!t)},l=i.normalize=function(e){return String(e).replace(a,".").toLowerCase()},s=i.data={},u=i.NATIVE="N",c=i.POLYFILL="P";e.exports=i},96231:e=>{e.exports=function(e){return null===e||void 0===e}},6167:(e,t,n)=>{var o=n(1169),r=n(69867),a=r.all;e.exports=r.IS_HTMLDDA?function(e){return"object"==typeof e?null!==e:o(e)||e===a}:function(e){return"object"==typeof e?null!==e:o(e)}},97974:e=>{e.exports=!1},93668:(e,t,n)=>{var o=n(56172),r=n(1169),a=n(63990),i=n(33686),l=Object;e.exports=i?function(e){return"symbol"==typeof e}:function(e){var t=o("Symbol");return r(t)&&a(t.prototype,l(e))}},12035:(e,t,n)=>{var o=n(8232);e.exports=function(e){return o(e.length)}},64589:(e,t,n)=>{var o=n(87481),r=n(26082),a=n(1169),i=n(25464),l=n(98593),s=n(40415).CONFIGURABLE,u=n(39966),c=n(23530),d=c.enforce,f=c.get,p=String,v=Object.defineProperty,h=o("".slice),m=o("".replace),g=o([].join),y=l&&!r((function(){return 8!==v((function(){}),"length",{value:8}).length})),b=String(String).split("String"),w=e.exports=function(e,t,n){"Symbol("===h(p(t),0,7)&&(t="["+m(p(t),/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(t="get "+t),n&&n.setter&&(t="set "+t),(!i(e,"name")||s&&e.name!==t)&&(l?v(e,"name",{value:t,configurable:!0}):e.name=t),y&&n&&i(n,"arity")&&e.length!==n.arity&&v(e,"length",{value:n.arity});try{n&&i(n,"constructor")&&n.constructor?l&&v(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(r){}var o=d(e);return i(o,"source")||(o.source=g(b,"string"==typeof t?t:"")),e};Function.prototype.toString=w((function(){return a(this)&&f(this).source||u(this)}),"toString")},59754:e=>{var t=Math.ceil,n=Math.floor;e.exports=Math.trunc||function(e){var o=+e;return(o>0?n:t)(o)}},91274:(e,t,n)=>{var o=n(98593),r=n(93604),a=n(11590),i=n(85552),l=n(57599),s=TypeError,u=Object.defineProperty,c=Object.getOwnPropertyDescriptor,d="enumerable",f="configurable",p="writable";t.f=o?a?function(e,t,n){if(i(e),t=l(t),i(n),"function"===typeof e&&"prototype"===t&&"value"in n&&p in n&&!n[p]){var o=c(e,t);o&&o[p]&&(e[t]=n.value,n={configurable:f in n?n[f]:o[f],enumerable:d in n?n[d]:o[d],writable:!1})}return u(e,t,n)}:u:function(e,t,n){if(i(e),t=l(t),i(n),r)try{return u(e,t,n)}catch(o){}if("get"in n||"set"in n)throw new s("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},86169:(e,t,n)=>{var o=n(98593),r=n(71991),a=n(89587),i=n(44542),l=n(59019),s=n(57599),u=n(25464),c=n(93604),d=Object.getOwnPropertyDescriptor;t.f=o?d:function(e,t){if(e=l(e),t=s(t),c)try{return d(e,t)}catch(n){}if(u(e,t))return i(!r(a.f,e,t),e[t])}},40925:(e,t,n)=>{var o=n(56460),r=n(36923),a=r.concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return o(e,a)}},72985:(e,t)=>{t.f=Object.getOwnPropertySymbols},39943:(e,t,n)=>{var o=n(25464),r=n(1169),a=n(42730),i=n(35883),l=n(41806),s=i("IE_PROTO"),u=Object,c=u.prototype;e.exports=l?u.getPrototypeOf:function(e){var t=a(e);if(o(t,s))return t[s];var n=t.constructor;return r(n)&&t instanceof n?n.prototype:t instanceof u?c:null}},63990:(e,t,n)=>{var o=n(87481);e.exports=o({}.isPrototypeOf)},56460:(e,t,n)=>{var o=n(87481),r=n(25464),a=n(59019),i=n(14137).indexOf,l=n(71599),s=o([].push);e.exports=function(e,t){var n,o=a(e),u=0,c=[];for(n in o)!r(l,n)&&r(o,n)&&s(c,n);while(t.length>u)r(o,n=t[u++])&&(~i(c,n)||s(c,n));return c}},89587:(e,t)=>{var n={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,r=o&&!n.call({1:2},1);t.f=r?function(e){var t=o(this,e);return!!t&&t.enumerable}:n},48794:(e,t,n)=>{var o=n(74796),r=n(85552),a=n(97310);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{e=o(Object.prototype,"__proto__","set"),e(n,[]),t=n instanceof Array}catch(i){}return function(n,o){return r(n),a(o),t?e(n,o):n.__proto__=o,n}}():void 0)},92665:(e,t,n)=>{var o=n(71991),r=n(1169),a=n(6167),i=TypeError;e.exports=function(e,t){var n,l;if("string"===t&&r(n=e.toString)&&!a(l=o(n,e)))return l;if(r(n=e.valueOf)&&!a(l=o(n,e)))return l;if("string"!==t&&r(n=e.toString)&&!a(l=o(n,e)))return l;throw new i("Can't convert object to primitive value")}},55664:(e,t,n)=>{var o=n(56172),r=n(87481),a=n(40925),i=n(72985),l=n(85552),s=r([].concat);e.exports=o("Reflect","ownKeys")||function(e){var t=a.f(l(e)),n=i.f;return n?s(t,n(e)):t}},99981:(e,t,n)=>{var o=n(85552);e.exports=function(){var e=o(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.unicodeSets&&(t+="v"),e.sticky&&(t+="y"),t}},37555:(e,t,n)=>{var o=n(96231),r=TypeError;e.exports=function(e){if(o(e))throw new r("Can't call method on "+e);return e}},35883:(e,t,n)=>{var o=n(28756),r=n(38035),a=o("keys");e.exports=function(e){return a[e]||(a[e]=r(e))}},30301:(e,t,n)=>{var o=n(78826),r=n(52130),a="__core-js_shared__",i=o[a]||r(a,{});e.exports=i},28756:(e,t,n)=>{var o=n(97974),r=n(30301);(e.exports=function(e,t){return r[e]||(r[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.33.2",mode:o?"pure":"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.33.2/LICENSE",source:"https://github.com/zloirock/core-js"})},5429:(e,t,n)=>{var o=n(92470),r=n(26082),a=n(78826),i=a.String;e.exports=!!Object.getOwnPropertySymbols&&!r((function(){var e=Symbol("symbol detection");return!i(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&o&&o<41}))},68794:(e,t,n)=>{var o=n(25822),r=Math.max,a=Math.min;e.exports=function(e,t){var n=o(e);return n<0?r(n+t,0):a(n,t)}},83360:(e,t,n)=>{var o=n(55476),r=TypeError;e.exports=function(e){var t=o(e,"number");if("number"==typeof t)throw new r("Can't convert number to bigint");return BigInt(t)}},59019:(e,t,n)=>{var o=n(78362),r=n(37555);e.exports=function(e){return o(r(e))}},25822:(e,t,n)=>{var o=n(59754);e.exports=function(e){var t=+e;return t!==t||0===t?0:o(t)}},8232:(e,t,n)=>{var o=n(25822),r=Math.min;e.exports=function(e){return e>0?r(o(e),9007199254740991):0}},42730:(e,t,n)=>{var o=n(37555),r=Object;e.exports=function(e){return r(o(e))}},55476:(e,t,n)=>{var o=n(71991),r=n(6167),a=n(93668),i=n(12710),l=n(92665),s=n(57324),u=TypeError,c=s("toPrimitive");e.exports=function(e,t){if(!r(e)||a(e))return e;var n,s=i(e,c);if(s){if(void 0===t&&(t="default"),n=o(s,e,t),!r(n)||a(n))return n;throw new u("Can't convert object to primitive value")}return void 0===t&&(t="number"),l(e,t)}},57599:(e,t,n)=>{var o=n(55476),r=n(93668);e.exports=function(e){var t=o(e,"string");return r(t)?t:t+""}},1033:(e,t,n)=>{var o=n(57324),r=o("toStringTag"),a={};a[r]="z",e.exports="[object z]"===String(a)},31927:e=>{var t=String;e.exports=function(e){try{return t(e)}catch(n){return"Object"}}},38035:(e,t,n)=>{var o=n(87481),r=0,a=Math.random(),i=o(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+i(++r+a,36)}},33686:(e,t,n)=>{var o=n(5429);e.exports=o&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},11590:(e,t,n)=>{var o=n(98593),r=n(26082);e.exports=o&&r((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},72831:(e,t,n)=>{var o=n(78826),r=n(1169),a=o.WeakMap;e.exports=r(a)&&/native code/.test(String(a))},57324:(e,t,n)=>{var o=n(78826),r=n(28756),a=n(25464),i=n(38035),l=n(5429),s=n(33686),u=o.Symbol,c=r("wks"),d=s?u["for"]||u:u&&u.withoutSetter||i;e.exports=function(e){return a(c,e)||(c[e]=l&&a(u,e)?u[e]:d("Symbol."+e)),c[e]}},72879:(e,t,n)=>{var o=n(78576),r=n(42730),a=n(12035),i=n(41084),l=n(23245),s=n(26082),u=s((function(){return 4294967297!==[].push.call({length:4294967296},1)})),c=function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(e){return e instanceof TypeError}},d=u||!c();o({target:"Array",proto:!0,arity:1,forced:d},{push:function(e){var t=r(this),n=a(t),o=arguments.length;l(n+o);for(var s=0;s{var o=n(78576),r=n(42730),a=n(12035),i=n(41084),l=n(12578),s=n(23245),u=1!==[].unshift(0),c=function(){try{Object.defineProperty([],"length",{writable:!1}).unshift()}catch(e){return e instanceof TypeError}},d=u||!c();o({target:"Array",proto:!0,arity:1,forced:d},{unshift:function(e){var t=r(this),n=a(t),o=arguments.length;if(o){s(n+o);var u=n;while(u--){var c=u+o;u in t?t[c]=t[u]:l(t,c)}for(var d=0;d{var o=n(78826),r=n(98593),a=n(8329),i=n(99981),l=n(26082),s=o.RegExp,u=s.prototype,c=r&&l((function(){var e=!0;try{s(".","d")}catch(c){e=!1}var t={},n="",o=e?"dgimsy":"gimsy",r=function(e,o){Object.defineProperty(t,e,{get:function(){return n+=o,!0}})},a={dotAll:"s",global:"g",ignoreCase:"i",multiline:"m",sticky:"y"};for(var i in e&&(a.hasIndices="d"),a)r(i,a[i]);var l=Object.getOwnPropertyDescriptor(u,"flags").get.call(t);return l!==o||n!==o}));c&&a(u,"flags",{configurable:!0,get:i})},98994:(e,t,n)=>{var o=n(98048),r=n(92831),a=r.aTypedArray,i=r.exportTypedArrayMethod,l=r.getTypedArrayConstructor;i("toReversed",(function(){return o(a(this),l(this))}))},28516:(e,t,n)=>{var o=n(92831),r=n(87481),a=n(61831),i=n(7381),l=o.aTypedArray,s=o.getTypedArrayConstructor,u=o.exportTypedArrayMethod,c=r(o.TypedArrayPrototype.sort);u("toSorted",(function(e){void 0!==e&&a(e);var t=l(this),n=i(s(t),t);return c(n,e)}))},24287:(e,t,n)=>{var o=n(18561),r=n(92831),a=n(94218),i=n(25822),l=n(83360),s=r.aTypedArray,u=r.getTypedArrayConstructor,c=r.exportTypedArrayMethod,d=!!function(){try{new Int8Array(1)["with"](2,{valueOf:function(){throw 8}})}catch(e){return 8===e}}();c("with",{with:function(e,t){var n=s(this),r=i(e),c=a(n)?l(t):+t;return o(n,u(n),r,c)}}["with"],!d)},37524:(e,t,n)=>{function o(e,t){return function(){return e.apply(t,arguments)}}n.d(t,{Z:()=>Vt});const{toString:r}=Object.prototype,{getPrototypeOf:a}=Object,i=(e=>t=>{const n=r.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),l=e=>(e=e.toLowerCase(),t=>i(t)===e),s=e=>t=>typeof t===e,{isArray:u}=Array,c=s("undefined");function d(e){return null!==e&&!c(e)&&null!==e.constructor&&!c(e.constructor)&&h(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const f=l("ArrayBuffer");function p(e){let t;return t="undefined"!==typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&f(e.buffer),t}const v=s("string"),h=s("function"),m=s("number"),g=e=>null!==e&&"object"===typeof e,y=e=>!0===e||!1===e,b=e=>{if("object"!==i(e))return!1;const t=a(e);return(null===t||t===Object.prototype||null===Object.getPrototypeOf(t))&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},w=l("Date"),_=l("File"),x=l("Blob"),S=l("FileList"),k=e=>g(e)&&h(e.pipe),O=e=>{let t;return e&&("function"===typeof FormData&&e instanceof FormData||h(e.append)&&("formdata"===(t=i(e))||"object"===t&&h(e.toString)&&"[object FormData]"===e.toString()))},E=l("URLSearchParams"),F=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function q(e,t,{allOwnKeys:n=!1}={}){if(null===e||"undefined"===typeof e)return;let o,r;if("object"!==typeof e&&(e=[e]),u(e))for(o=0,r=e.length;o0)if(o=n[r],t===o.toLowerCase())return o;return null}const R=(()=>"undefined"!==typeof globalThis?globalThis:"undefined"!==typeof self?self:"undefined"!==typeof window?window:global)(),A=e=>!c(e)&&e!==R;function T(){const{caseless:e}=A(this)&&this||{},t={},n=(n,o)=>{const r=e&&C(t,o)||o;b(t[r])&&b(n)?t[r]=T(t[r],n):b(n)?t[r]=T({},n):u(n)?t[r]=n.slice():t[r]=n};for(let o=0,r=arguments.length;o(q(t,((t,r)=>{n&&h(t)?e[r]=o(t,n):e[r]=t}),{allOwnKeys:r}),e),B=e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),P=(e,t,n,o)=>{e.prototype=Object.create(t.prototype,o),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},L=(e,t,n,o)=>{let r,i,l;const s={};if(t=t||{},null==e)return t;do{r=Object.getOwnPropertyNames(e),i=r.length;while(i-- >0)l=r[i],o&&!o(l,e,t)||s[l]||(t[l]=e[l],s[l]=!0);e=!1!==n&&a(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},N=(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const o=e.indexOf(t,n);return-1!==o&&o===n},M=e=>{if(!e)return null;if(u(e))return e;let t=e.length;if(!m(t))return null;const n=new Array(t);while(t-- >0)n[t]=e[t];return n},V=(e=>t=>e&&t instanceof e)("undefined"!==typeof Uint8Array&&a(Uint8Array)),U=(e,t)=>{const n=e&&e[Symbol.iterator],o=n.call(e);let r;while((r=o.next())&&!r.done){const n=r.value;t.call(e,n[0],n[1])}},z=(e,t)=>{let n;const o=[];while(null!==(n=e.exec(t)))o.push(n);return o},D=l("HTMLFormElement"),$=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n})),I=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),Z=l("RegExp"),H=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),o={};q(n,((n,r)=>{let a;!1!==(a=t(n,r,e))&&(o[r]=a||n)})),Object.defineProperties(e,o)},K=e=>{H(e,((t,n)=>{if(h(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const o=e[n];h(o)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))}))},J=(e,t)=>{const n={},o=e=>{e.forEach((e=>{n[e]=!0}))};return u(e)?o(e):o(String(e).split(t)),n},W=()=>{},Y=(e,t)=>(e=+e,Number.isFinite(e)?e:t),Q="abcdefghijklmnopqrstuvwxyz",X="0123456789",G={DIGIT:X,ALPHA:Q,ALPHA_DIGIT:Q+Q.toUpperCase()+X},ee=(e=16,t=G.ALPHA_DIGIT)=>{let n="";const{length:o}=t;while(e--)n+=t[Math.random()*o|0];return n};function te(e){return!!(e&&h(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])}const ne=e=>{const t=new Array(10),n=(e,o)=>{if(g(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[o]=e;const r=u(e)?[]:{};return q(e,((e,t)=>{const a=n(e,o+1);!c(a)&&(r[t]=a)})),t[o]=void 0,r}}return e};return n(e,0)},oe=l("AsyncFunction"),re=e=>e&&(g(e)||h(e))&&h(e.then)&&h(e.catch),ae={isArray:u,isArrayBuffer:f,isBuffer:d,isFormData:O,isArrayBufferView:p,isString:v,isNumber:m,isBoolean:y,isObject:g,isPlainObject:b,isUndefined:c,isDate:w,isFile:_,isBlob:x,isRegExp:Z,isFunction:h,isStream:k,isURLSearchParams:E,isTypedArray:V,isFileList:S,forEach:q,merge:T,extend:j,trim:F,stripBOM:B,inherits:P,toFlatObject:L,kindOf:i,kindOfTest:l,endsWith:N,toArray:M,forEachEntry:U,matchAll:z,isHTMLForm:D,hasOwnProperty:I,hasOwnProp:I,reduceDescriptors:H,freezeMethods:K,toObjectSet:J,toCamelCase:$,noop:W,toFiniteNumber:Y,findKey:C,global:R,isContextDefined:A,ALPHABET:G,generateString:ee,isSpecCompliantForm:te,toJSONObject:ne,isAsyncFn:oe,isThenable:re};function ie(e,t,n,o,r){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),o&&(this.request=o),r&&(this.response=r)}ae.inherits(ie,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:ae.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const le=ie.prototype,se={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{se[e]={value:e}})),Object.defineProperties(ie,se),Object.defineProperty(le,"isAxiosError",{value:!0}),ie.from=(e,t,n,o,r,a)=>{const i=Object.create(le);return ae.toFlatObject(e,i,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),ie.call(i,e.message,t,n,o,r),i.cause=e,i.name=e.name,a&&Object.assign(i,a),i};const ue=ie,ce=null;function de(e){return ae.isPlainObject(e)||ae.isArray(e)}function fe(e){return ae.endsWith(e,"[]")?e.slice(0,-2):e}function pe(e,t,n){return e?e.concat(t).map((function(e,t){return e=fe(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}function ve(e){return ae.isArray(e)&&!e.some(de)}const he=ae.toFlatObject(ae,{},null,(function(e){return/^is[A-Z]/.test(e)}));function me(e,t,n){if(!ae.isObject(e))throw new TypeError("target must be an object");t=t||new(ce||FormData),n=ae.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!ae.isUndefined(t[e])}));const o=n.metaTokens,r=n.visitor||c,a=n.dots,i=n.indexes,l=n.Blob||"undefined"!==typeof Blob&&Blob,s=l&&ae.isSpecCompliantForm(t);if(!ae.isFunction(r))throw new TypeError("visitor must be a function");function u(e){if(null===e)return"";if(ae.isDate(e))return e.toISOString();if(!s&&ae.isBlob(e))throw new ue("Blob is not supported. Use a Buffer instead.");return ae.isArrayBuffer(e)||ae.isTypedArray(e)?s&&"function"===typeof Blob?new Blob([e]):Buffer.from(e):e}function c(e,n,r){let l=e;if(e&&!r&&"object"===typeof e)if(ae.endsWith(n,"{}"))n=o?n:n.slice(0,-2),e=JSON.stringify(e);else if(ae.isArray(e)&&ve(e)||(ae.isFileList(e)||ae.endsWith(n,"[]"))&&(l=ae.toArray(e)))return n=fe(n),l.forEach((function(e,o){!ae.isUndefined(e)&&null!==e&&t.append(!0===i?pe([n],o,a):null===i?n:n+"[]",u(e))})),!1;return!!de(e)||(t.append(pe(r,n,a),u(e)),!1)}const d=[],f=Object.assign(he,{defaultVisitor:c,convertValue:u,isVisitable:de});function p(e,n){if(!ae.isUndefined(e)){if(-1!==d.indexOf(e))throw Error("Circular reference detected in "+n.join("."));d.push(e),ae.forEach(e,(function(e,o){const a=!(ae.isUndefined(e)||null===e)&&r.call(t,e,ae.isString(o)?o.trim():o,n,f);!0===a&&p(e,n?n.concat(o):[o])})),d.pop()}}if(!ae.isObject(e))throw new TypeError("data must be an object");return p(e),t}const ge=me;function ye(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function be(e,t){this._pairs=[],e&&ge(e,this,t)}const we=be.prototype;we.append=function(e,t){this._pairs.push([e,t])},we.toString=function(e){const t=e?function(t){return e.call(this,t,ye)}:ye;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};const _e=be;function xe(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Se(e,t,n){if(!t)return e;const o=n&&n.encode||xe,r=n&&n.serialize;let a;if(a=r?r(t,n):ae.isURLSearchParams(t)?t.toString():new _e(t,n).toString(o),a){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+a}return e}class ke{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){ae.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}const Oe=ke,Ee={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Fe="undefined"!==typeof URLSearchParams?URLSearchParams:_e,qe="undefined"!==typeof FormData?FormData:null,Ce="undefined"!==typeof Blob?Blob:null,Re=(()=>{let e;return("undefined"===typeof navigator||"ReactNative"!==(e=navigator.product)&&"NativeScript"!==e&&"NS"!==e)&&("undefined"!==typeof window&&"undefined"!==typeof document)})(),Ae=(()=>"undefined"!==typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"===typeof self.importScripts)(),Te={isBrowser:!0,classes:{URLSearchParams:Fe,FormData:qe,Blob:Ce},isStandardBrowserEnv:Re,isStandardBrowserWebWorkerEnv:Ae,protocols:["http","https","file","blob","url","data"]};function je(e,t){return ge(e,new Te.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,o){return Te.isNode&&ae.isBuffer(e)?(this.append(t,e.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)}},t))}function Be(e){return ae.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}function Pe(e){const t={},n=Object.keys(e);let o;const r=n.length;let a;for(o=0;o=e.length;if(a=!a&&ae.isArray(o)?o.length:a,l)return ae.hasOwnProp(o,a)?o[a]=[o[a],n]:o[a]=n,!i;o[a]&&ae.isObject(o[a])||(o[a]=[]);const s=t(e,n,o[a],r);return s&&ae.isArray(o[a])&&(o[a]=Pe(o[a])),!i}if(ae.isFormData(e)&&ae.isFunction(e.entries)){const n={};return ae.forEachEntry(e,((e,o)=>{t(Be(e),o,n,0)})),n}return null}const Ne=Le;function Me(e,t,n){if(ae.isString(e))try{return(t||JSON.parse)(e),ae.trim(e)}catch(o){if("SyntaxError"!==o.name)throw o}return(n||JSON.stringify)(e)}const Ve={transitional:Ee,adapter:["xhr","http"],transformRequest:[function(e,t){const n=t.getContentType()||"",o=n.indexOf("application/json")>-1,r=ae.isObject(e);r&&ae.isHTMLForm(e)&&(e=new FormData(e));const a=ae.isFormData(e);if(a)return o&&o?JSON.stringify(Ne(e)):e;if(ae.isArrayBuffer(e)||ae.isBuffer(e)||ae.isStream(e)||ae.isFile(e)||ae.isBlob(e))return e;if(ae.isArrayBufferView(e))return e.buffer;if(ae.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let i;if(r){if(n.indexOf("application/x-www-form-urlencoded")>-1)return je(e,this.formSerializer).toString();if((i=ae.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return ge(i?{"files[]":e}:e,t&&new t,this.formSerializer)}}return r||o?(t.setContentType("application/json",!1),Me(e)):e}],transformResponse:[function(e){const t=this.transitional||Ve.transitional,n=t&&t.forcedJSONParsing,o="json"===this.responseType;if(e&&ae.isString(e)&&(n&&!this.responseType||o)){const n=t&&t.silentJSONParsing,a=!n&&o;try{return JSON.parse(e)}catch(r){if(a){if("SyntaxError"===r.name)throw ue.from(r,ue.ERR_BAD_RESPONSE,this,null,this.response);throw r}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Te.classes.FormData,Blob:Te.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};ae.forEach(["delete","get","head","post","put","patch"],(e=>{Ve.headers[e]={}}));const Ue=Ve,ze=ae.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),De=e=>{const t={};let n,o,r;return e&&e.split("\n").forEach((function(e){r=e.indexOf(":"),n=e.substring(0,r).trim().toLowerCase(),o=e.substring(r+1).trim(),!n||t[n]&&ze[n]||("set-cookie"===n?t[n]?t[n].push(o):t[n]=[o]:t[n]=t[n]?t[n]+", "+o:o)})),t},$e=Symbol("internals");function Ie(e){return e&&String(e).trim().toLowerCase()}function Ze(e){return!1===e||null==e?e:ae.isArray(e)?e.map(Ze):String(e)}function He(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let o;while(o=n.exec(e))t[o[1]]=o[2];return t}const Ke=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Je(e,t,n,o,r){return ae.isFunction(o)?o.call(this,t,n):(r&&(t=n),ae.isString(t)?ae.isString(o)?-1!==t.indexOf(o):ae.isRegExp(o)?o.test(t):void 0:void 0)}function We(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,n)=>t.toUpperCase()+n))}function Ye(e,t){const n=ae.toCamelCase(" "+t);["get","set","has"].forEach((o=>{Object.defineProperty(e,o+n,{value:function(e,n,r){return this[o].call(this,t,e,n,r)},configurable:!0})}))}class Qe{constructor(e){e&&this.set(e)}set(e,t,n){const o=this;function r(e,t,n){const r=Ie(t);if(!r)throw new Error("header name must be a non-empty string");const a=ae.findKey(o,r);(!a||void 0===o[a]||!0===n||void 0===n&&!1!==o[a])&&(o[a||t]=Ze(e))}const a=(e,t)=>ae.forEach(e,((e,n)=>r(e,n,t)));return ae.isPlainObject(e)||e instanceof this.constructor?a(e,t):ae.isString(e)&&(e=e.trim())&&!Ke(e)?a(De(e),t):null!=e&&r(t,e,n),this}get(e,t){if(e=Ie(e),e){const n=ae.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return He(e);if(ae.isFunction(t))return t.call(this,e,n);if(ae.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=Ie(e),e){const n=ae.findKey(this,e);return!(!n||void 0===this[n]||t&&!Je(this,this[n],n,t))}return!1}delete(e,t){const n=this;let o=!1;function r(e){if(e=Ie(e),e){const r=ae.findKey(n,e);!r||t&&!Je(n,n[r],r,t)||(delete n[r],o=!0)}}return ae.isArray(e)?e.forEach(r):r(e),o}clear(e){const t=Object.keys(this);let n=t.length,o=!1;while(n--){const r=t[n];e&&!Je(this,this[r],r,e,!0)||(delete this[r],o=!0)}return o}normalize(e){const t=this,n={};return ae.forEach(this,((o,r)=>{const a=ae.findKey(n,r);if(a)return t[a]=Ze(o),void delete t[r];const i=e?We(r):String(r).trim();i!==r&&delete t[r],t[i]=Ze(o),n[i]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return ae.forEach(this,((n,o)=>{null!=n&&!1!==n&&(t[o]=e&&ae.isArray(n)?n.join(", "):n)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach((e=>n.set(e))),n}static accessor(e){const t=this[$e]=this[$e]={accessors:{}},n=t.accessors,o=this.prototype;function r(e){const t=Ie(e);n[t]||(Ye(o,e),n[t]=!0)}return ae.isArray(e)?e.forEach(r):r(e),this}}Qe.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),ae.reduceDescriptors(Qe.prototype,(({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}})),ae.freezeMethods(Qe);const Xe=Qe;function Ge(e,t){const n=this||Ue,o=t||n,r=Xe.from(o.headers);let a=o.data;return ae.forEach(e,(function(e){a=e.call(n,a,r.normalize(),t?t.status:void 0)})),r.normalize(),a}function et(e){return!(!e||!e.__CANCEL__)}function tt(e,t,n){ue.call(this,null==e?"canceled":e,ue.ERR_CANCELED,t,n),this.name="CanceledError"}ae.inherits(tt,ue,{__CANCEL__:!0});const nt=tt;function ot(e,t,n){const o=n.config.validateStatus;n.status&&o&&!o(n.status)?t(new ue("Request failed with status code "+n.status,[ue.ERR_BAD_REQUEST,ue.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}const rt=Te.isStandardBrowserEnv?function(){return{write:function(e,t,n,o,r,a){const i=[];i.push(e+"="+encodeURIComponent(t)),ae.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),ae.isString(o)&&i.push("path="+o),ae.isString(r)&&i.push("domain="+r),!0===a&&i.push("secure"),document.cookie=i.join("; ")},read:function(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}();function at(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function it(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}function lt(e,t){return e&&!at(t)?it(e,t):t}const st=Te.isStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let n;function o(n){let o=n;return e&&(t.setAttribute("href",o),o=t.href),t.setAttribute("href",o),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return n=o(window.location.href),function(e){const t=ae.isString(e)?o(e):e;return t.protocol===n.protocol&&t.host===n.host}}():function(){return function(){return!0}}();function ut(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function ct(e,t){e=e||10;const n=new Array(e),o=new Array(e);let r,a=0,i=0;return t=void 0!==t?t:1e3,function(l){const s=Date.now(),u=o[i];r||(r=s),n[a]=l,o[a]=s;let c=i,d=0;while(c!==a)d+=n[c++],c%=e;if(a=(a+1)%e,a===i&&(i=(i+1)%e),s-r{const a=r.loaded,i=r.lengthComputable?r.total:void 0,l=a-n,s=o(l),u=a<=i;n=a;const c={loaded:a,total:i,progress:i?a/i:void 0,bytes:l,rate:s||void 0,estimated:s&&i&&u?(i-a)/s:void 0,event:r};c[t?"download":"upload"]=!0,e(c)}}const pt="undefined"!==typeof XMLHttpRequest,vt=pt&&function(e){return new Promise((function(t,n){let o=e.data;const r=Xe.from(e.headers).normalize(),a=e.responseType;let i,l;function s(){e.cancelToken&&e.cancelToken.unsubscribe(i),e.signal&&e.signal.removeEventListener("abort",i)}ae.isFormData(o)&&(Te.isStandardBrowserEnv||Te.isStandardBrowserWebWorkerEnv?r.setContentType(!1):r.getContentType(/^\s*multipart\/form-data/)?ae.isString(l=r.getContentType())&&r.setContentType(l.replace(/^\s*(multipart\/form-data);+/,"$1")):r.setContentType("multipart/form-data"));let u=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",n=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";r.set("Authorization","Basic "+btoa(t+":"+n))}const c=lt(e.baseURL,e.url);function d(){if(!u)return;const o=Xe.from("getAllResponseHeaders"in u&&u.getAllResponseHeaders()),r=a&&"text"!==a&&"json"!==a?u.response:u.responseText,i={data:r,status:u.status,statusText:u.statusText,headers:o,config:e,request:u};ot((function(e){t(e),s()}),(function(e){n(e),s()}),i),u=null}if(u.open(e.method.toUpperCase(),Se(c,e.params,e.paramsSerializer),!0),u.timeout=e.timeout,"onloadend"in u?u.onloadend=d:u.onreadystatechange=function(){u&&4===u.readyState&&(0!==u.status||u.responseURL&&0===u.responseURL.indexOf("file:"))&&setTimeout(d)},u.onabort=function(){u&&(n(new ue("Request aborted",ue.ECONNABORTED,e,u)),u=null)},u.onerror=function(){n(new ue("Network Error",ue.ERR_NETWORK,e,u)),u=null},u.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const o=e.transitional||Ee;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(new ue(t,o.clarifyTimeoutError?ue.ETIMEDOUT:ue.ECONNABORTED,e,u)),u=null},Te.isStandardBrowserEnv){const t=st(c)&&e.xsrfCookieName&&rt.read(e.xsrfCookieName);t&&r.set(e.xsrfHeaderName,t)}void 0===o&&r.setContentType(null),"setRequestHeader"in u&&ae.forEach(r.toJSON(),(function(e,t){u.setRequestHeader(t,e)})),ae.isUndefined(e.withCredentials)||(u.withCredentials=!!e.withCredentials),a&&"json"!==a&&(u.responseType=e.responseType),"function"===typeof e.onDownloadProgress&&u.addEventListener("progress",ft(e.onDownloadProgress,!0)),"function"===typeof e.onUploadProgress&&u.upload&&u.upload.addEventListener("progress",ft(e.onUploadProgress)),(e.cancelToken||e.signal)&&(i=t=>{u&&(n(!t||t.type?new nt(null,e,u):t),u.abort(),u=null)},e.cancelToken&&e.cancelToken.subscribe(i),e.signal&&(e.signal.aborted?i():e.signal.addEventListener("abort",i)));const f=ut(c);f&&-1===Te.protocols.indexOf(f)?n(new ue("Unsupported protocol "+f+":",ue.ERR_BAD_REQUEST,e)):u.send(o||null)}))},ht={http:ce,xhr:vt};ae.forEach(ht,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(n){}Object.defineProperty(e,"adapterName",{value:t})}}));const mt=e=>`- ${e}`,gt=e=>ae.isFunction(e)||null===e||!1===e,yt={getAdapter:e=>{e=ae.isArray(e)?e:[e];const{length:t}=e;let n,o;const r={};for(let a=0;a`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));let n=t?e.length>1?"since :\n"+e.map(mt).join("\n"):" "+mt(e[0]):"as no adapter specified";throw new ue("There is no suitable adapter to dispatch the request "+n,"ERR_NOT_SUPPORT")}return o},adapters:ht};function bt(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new nt(null,e)}function wt(e){bt(e),e.headers=Xe.from(e.headers),e.data=Ge.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);const t=yt.getAdapter(e.adapter||Ue.adapter);return t(e).then((function(t){return bt(e),t.data=Ge.call(e,e.transformResponse,t),t.headers=Xe.from(t.headers),t}),(function(t){return et(t)||(bt(e),t&&t.response&&(t.response.data=Ge.call(e,e.transformResponse,t.response),t.response.headers=Xe.from(t.response.headers))),Promise.reject(t)}))}const _t=e=>e instanceof Xe?e.toJSON():e;function xt(e,t){t=t||{};const n={};function o(e,t,n){return ae.isPlainObject(e)&&ae.isPlainObject(t)?ae.merge.call({caseless:n},e,t):ae.isPlainObject(t)?ae.merge({},t):ae.isArray(t)?t.slice():t}function r(e,t,n){return ae.isUndefined(t)?ae.isUndefined(e)?void 0:o(void 0,e,n):o(e,t,n)}function a(e,t){if(!ae.isUndefined(t))return o(void 0,t)}function i(e,t){return ae.isUndefined(t)?ae.isUndefined(e)?void 0:o(void 0,e):o(void 0,t)}function l(n,r,a){return a in t?o(n,r):a in e?o(void 0,n):void 0}const s={url:a,method:a,data:a,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:l,headers:(e,t)=>r(_t(e),_t(t),!0)};return ae.forEach(Object.keys(Object.assign({},e,t)),(function(o){const a=s[o]||r,i=a(e[o],t[o],o);ae.isUndefined(i)&&a!==l||(n[o]=i)})),n}const St="1.6.0",kt={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{kt[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));const Ot={};function Et(e,t,n){if("object"!==typeof e)throw new ue("options must be an object",ue.ERR_BAD_OPTION_VALUE);const o=Object.keys(e);let r=o.length;while(r-- >0){const a=o[r],i=t[a];if(i){const t=e[a],n=void 0===t||i(t,a,e);if(!0!==n)throw new ue("option "+a+" must be "+n,ue.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new ue("Unknown option "+a,ue.ERR_BAD_OPTION)}}kt.transitional=function(e,t,n){function o(e,t){return"[Axios v"+St+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,r,a)=>{if(!1===e)throw new ue(o(r," has been removed"+(t?" in "+t:"")),ue.ERR_DEPRECATED);return t&&!Ot[r]&&(Ot[r]=!0,console.warn(o(r," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,r,a)}};const Ft={assertOptions:Et,validators:kt},qt=Ft.validators;class Ct{constructor(e){this.defaults=e,this.interceptors={request:new Oe,response:new Oe}}request(e,t){"string"===typeof e?(t=t||{},t.url=e):t=e||{},t=xt(this.defaults,t);const{transitional:n,paramsSerializer:o,headers:r}=t;void 0!==n&&Ft.assertOptions(n,{silentJSONParsing:qt.transitional(qt.boolean),forcedJSONParsing:qt.transitional(qt.boolean),clarifyTimeoutError:qt.transitional(qt.boolean)},!1),null!=o&&(ae.isFunction(o)?t.paramsSerializer={serialize:o}:Ft.assertOptions(o,{encode:qt.function,serialize:qt.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let a=r&&ae.merge(r.common,r[t.method]);r&&ae.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete r[e]})),t.headers=Xe.concat(a,r);const i=[];let l=!0;this.interceptors.request.forEach((function(e){"function"===typeof e.runWhen&&!1===e.runWhen(t)||(l=l&&e.synchronous,i.unshift(e.fulfilled,e.rejected))}));const s=[];let u;this.interceptors.response.forEach((function(e){s.push(e.fulfilled,e.rejected)}));let c,d=0;if(!l){const e=[wt.bind(this),void 0];e.unshift.apply(e,i),e.push.apply(e,s),c=e.length,u=Promise.resolve(t);while(d{if(!n._listeners)return;let t=n._listeners.length;while(t-- >0)n._listeners[t](e);n._listeners=null})),this.promise.then=e=>{let t;const o=new Promise((e=>{n.subscribe(e),t=e})).then(e);return o.cancel=function(){n.unsubscribe(t)},o},e((function(e,o,r){n.reason||(n.reason=new nt(e,o,r),t(n.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;const t=new At((function(t){e=t}));return{token:t,cancel:e}}}const Tt=At;function jt(e){return function(t){return e.apply(null,t)}}function Bt(e){return ae.isObject(e)&&!0===e.isAxiosError}const Pt={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Pt).forEach((([e,t])=>{Pt[t]=e}));const Lt=Pt;function Nt(e){const t=new Rt(e),n=o(Rt.prototype.request,t);return ae.extend(n,Rt.prototype,t,{allOwnKeys:!0}),ae.extend(n,t,null,{allOwnKeys:!0}),n.create=function(t){return Nt(xt(e,t))},n}const Mt=Nt(Ue);Mt.Axios=Rt,Mt.CanceledError=nt,Mt.CancelToken=Tt,Mt.isCancel=et,Mt.VERSION=St,Mt.toFormData=ge,Mt.AxiosError=ue,Mt.Cancel=Mt.CanceledError,Mt.all=function(e){return Promise.all(e)},Mt.spread=jt,Mt.isAxiosError=Bt,Mt.mergeConfig=xt,Mt.AxiosHeaders=Xe,Mt.formToJSON=e=>Ne(ae.isHTMLForm(e)?new FormData(e):e),Mt.getAdapter=yt.getAdapter,Mt.HttpStatusCode=Lt,Mt.default=Mt;const Vt=Mt}}]); \ No newline at end of file diff --git a/dist/js/296.310ff438.js b/dist/js/296.310ff438.js new file mode 100644 index 00000000..c52d5e87 --- /dev/null +++ b/dist/js/296.310ff438.js @@ -0,0 +1,3 @@ +"use strict";(globalThis["webpackChunkfrontend"]=globalThis["webpackChunkfrontend"]||[]).push([[296],{90882:(t,e,i)=>{i.d(e,{$W:()=>w,Dt:()=>y,G6:()=>f,MG:()=>v,Pf:()=>m,Tz:()=>d,i7:()=>g,ie:()=>c,uB:()=>h,vU:()=>p});var s=i(11271),n=i(70959);class o{constructor(){this._zoomFactor=1}getZoomFactor(){return this._zoomFactor}}o.INSTANCE=new o;class r extends n.JT{constructor(){super(),this._onDidChange=this._register(new s.Q5),this.onDidChange=this._onDidChange.event,this._listener=()=>this._handleChange(!0),this._mediaQueryList=null,this._handleChange(!1)}_handleChange(t){var e;null===(e=this._mediaQueryList)||void 0===e||e.removeEventListener("change",this._listener),this._mediaQueryList=window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`),this._mediaQueryList.addEventListener("change",this._listener),t&&this._onDidChange.fire()}}class a extends n.JT{get value(){return this._value}constructor(){super(),this._onDidChange=this._register(new s.Q5),this.onDidChange=this._onDidChange.event,this._value=this._getPixelRatio();const t=this._register(new r);this._register(t.onDidChange((()=>{this._value=this._getPixelRatio(),this._onDidChange.fire(this._value)})))}_getPixelRatio(){const t=document.createElement("canvas").getContext("2d"),e=window.devicePixelRatio||1,i=t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return e/i}}class l{constructor(){this._pixelRatioMonitor=null}_getOrCreatePixelRatioMonitor(){return this._pixelRatioMonitor||(this._pixelRatioMonitor=(0,n.dk)(new a)),this._pixelRatioMonitor}get value(){return this._getOrCreatePixelRatioMonitor().value}get onDidChange(){return this._getOrCreatePixelRatioMonitor().onDidChange}}function h(t,e){"string"===typeof t&&(t=window.matchMedia(t)),t.addEventListener("change",e)}const d=new l;function c(){return o.INSTANCE.getZoomFactor()}const u=navigator.userAgent,p=u.indexOf("Firefox")>=0,m=u.indexOf("AppleWebKit")>=0,g=u.indexOf("Chrome")>=0,f=!g&&u.indexOf("Safari")>=0,v=!g&&!f&&m,y=(u.indexOf("Electron/"),u.indexOf("Android")>=0);let b=!1;if(window.matchMedia){const t=window.matchMedia("(display-mode: standalone) or (display-mode: window-controls-overlay)"),e=window.matchMedia("(display-mode: fullscreen)");b=t.matches,h(t,(({matches:t})=>{b&&e.matches||(b=t)}))}function w(){return b}},53915:(t,e,i)=>{i.d(e,{D:()=>o});var s=i(90882),n=i(47606);const o={clipboard:{writeText:n.tY||document.queryCommandSupported&&document.queryCommandSupported("copy")||!!(navigator&&navigator.clipboard&&navigator.clipboard.writeText),readText:n.tY||!!(navigator&&navigator.clipboard&&navigator.clipboard.readText)},keyboard:(()=>n.tY||s.$W()?0:navigator.keyboard||s.G6?1:2)(),touch:"ontouchstart"in window||navigator.maxTouchPoints>0,pointerEvents:window.PointerEvent&&("ontouchstart"in window||window.navigator.maxTouchPoints>0||navigator.maxTouchPoints>0)}},99307:(t,e,i)=>{i.d(e,{H:()=>h});var s=i(82168),n=i(49008);const o=(0,s.Z)("defaultWorkerFactory",{createScriptURL:t=>t});function r(t){const e=globalThis.MonacoEnvironment;if(e){if("function"===typeof e.getWorker)return e.getWorker("workerMain.js",t);if("function"===typeof e.getWorkerUrl){const i=e.getWorkerUrl("workerMain.js",t);return new Worker(o?o.createScriptURL(i):i,{name:t})}}throw new Error("You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker")}function a(t){return"function"===typeof t.then}class l{constructor(t,e,i,s,n){this.id=e;const o=r(i);a(o)?this.worker=o:this.worker=Promise.resolve(o),this.postMessage(t,[]),this.worker.then((t=>{t.onmessage=function(t){s(t.data)},t.onmessageerror=n,"function"===typeof t.addEventListener&&t.addEventListener("error",n)}))}getId(){return this.id}postMessage(t,e){var i;null===(i=this.worker)||void 0===i||i.then((i=>i.postMessage(t,e)))}dispose(){var t;null===(t=this.worker)||void 0===t||t.then((t=>t.terminate())),this.worker=null}}class h{constructor(t){this._label=t,this._webWorkerFailedBeforeError=!1}create(t,e,i){const s=++h.LAST_WORKER_ID;if(this._webWorkerFailedBeforeError)throw this._webWorkerFailedBeforeError;return new l(t,s,this._label||"anonymous"+s,e,(t=>{(0,n.HZ)(t),this._webWorkerFailedBeforeError=t,i(t)}))}}h.LAST_WORKER_ID=0},1483:(t,e,i)=>{i.d(e,{g:()=>n});var s=i(96358);const n={RESOURCES:"ResourceURLs",DOWNLOAD_URL:"DownloadURL",FILES:"Files",TEXT:s.v.text,INTERNAL_URI_LIST:"application/vnd.code.uri-list"}},2548:(t,e,i)=>{i.d(e,{$:()=>dt,$Z:()=>ut,Ay:()=>U,Ce:()=>ot,Cp:()=>pt,D6:()=>k,Dx:()=>T,FK:()=>I,Fx:()=>F,GQ:()=>w,I8:()=>L,If:()=>M,OO:()=>W,PO:()=>p,R3:()=>nt,Re:()=>X,Ro:()=>D,Uh:()=>mt,Uw:()=>m,V3:()=>gt,XT:()=>bt,_0:()=>et,_F:()=>wt,_h:()=>yt,_q:()=>xt,cl:()=>Z,dS:()=>z,dp:()=>A,eg:()=>Ct,fk:()=>q,go:()=>st,h:()=>Tt,i:()=>O,iJ:()=>ct,jL:()=>C,jg:()=>B,jt:()=>ft,lI:()=>x,mc:()=>rt,mu:()=>b,nm:()=>f,sQ:()=>_t,tw:()=>Q,uN:()=>j,uU:()=>H,vL:()=>tt,vY:()=>V,w:()=>R,wY:()=>vt,wn:()=>P,xQ:()=>N,zB:()=>J});var s=i(90882),n=i(53915),o=i(45429),r=i(75467),a=i(98642),l=i(11271),h=i(29739),d=i(70959),c=i(50200),u=i(47606);function p(t){while(t.firstChild)t.firstChild.remove()}function m(t){var e;return null!==(e=null===t||void 0===t?void 0:t.isConnected)&&void 0!==e&&e}class g{constructor(t,e,i,s){this._node=t,this._type=e,this._handler=i,this._options=s||!1,this._node.addEventListener(this._type,this._handler,this._options)}dispose(){this._handler&&(this._node.removeEventListener(this._type,this._handler,this._options),this._node=null,this._handler=null)}}function f(t,e,i,s){return new g(t,e,i,s)}function v(t){return function(e){return t(new r.n(e))}}function y(t){return function(e){return t(new o.y(e))}}const b=function(t,e,i,s){let n=i;return"click"===e||"mousedown"===e?n=v(i):"keydown"!==e&&"keypress"!==e&&"keyup"!==e||(n=y(i)),f(t,e,n,s)},w=function(t,e,i){const s=v(e);return _(t,s,i)};function _(t,e,i){return f(t,u.gn&&n.D.pointerEvents?Q.POINTER_DOWN:Q.MOUSE_DOWN,e,i)}let x,C;class E{constructor(t,e=0){this._runner=t,this.priority=e,this._canceled=!1}dispose(){this._canceled=!0}execute(){if(!this._canceled)try{this._runner()}catch(t){(0,a.dL)(t)}}static sort(t,e){return e.priority-t.priority}}function T(t){return document.defaultView.getComputedStyle(t,null)}function k(t){if(t!==document.body)return new D(t.clientWidth,t.clientHeight);if(u.gn&&window.visualViewport)return new D(window.visualViewport.width,window.visualViewport.height);if(window.innerWidth&&window.innerHeight)return new D(window.innerWidth,window.innerHeight);if(document.body&&document.body.clientWidth&&document.body.clientHeight)return new D(document.body.clientWidth,document.body.clientHeight);if(document.documentElement&&document.documentElement.clientWidth&&document.documentElement.clientHeight)return new D(document.documentElement.clientWidth,document.documentElement.clientHeight);throw new Error("Unable to figure out browser width and height")}(function(){let t=[],e=null,i=!1,s=!1;const n=()=>{i=!1,e=t,t=[],s=!0;while(e.length>0){e.sort(E.sort);const t=e.shift();t.execute()}s=!1};C=(e,s=0)=>{const o=new E(e,s);return t.push(o),i||(i=!0,requestAnimationFrame(n)),o},x=(t,i)=>{if(s){const s=new E(t,i);return e.push(s),s}return C(t,i)}})();class S{static convertToPixels(t,e){return parseFloat(e)||0}static getDimension(t,e,i){const s=T(t),n=s?s.getPropertyValue(e):"0";return S.convertToPixels(t,n)}static getBorderLeftWidth(t){return S.getDimension(t,"border-left-width","borderLeftWidth")}static getBorderRightWidth(t){return S.getDimension(t,"border-right-width","borderRightWidth")}static getBorderTopWidth(t){return S.getDimension(t,"border-top-width","borderTopWidth")}static getBorderBottomWidth(t){return S.getDimension(t,"border-bottom-width","borderBottomWidth")}static getPaddingLeft(t){return S.getDimension(t,"padding-left","paddingLeft")}static getPaddingRight(t){return S.getDimension(t,"padding-right","paddingRight")}static getPaddingTop(t){return S.getDimension(t,"padding-top","paddingTop")}static getPaddingBottom(t){return S.getDimension(t,"padding-bottom","paddingBottom")}static getMarginLeft(t){return S.getDimension(t,"margin-left","marginLeft")}static getMarginTop(t){return S.getDimension(t,"margin-top","marginTop")}static getMarginRight(t){return S.getDimension(t,"margin-right","marginRight")}static getMarginBottom(t){return S.getDimension(t,"margin-bottom","marginBottom")}}class D{constructor(t,e){this.width=t,this.height=e}with(t=this.width,e=this.height){return t!==this.width||e!==this.height?new D(t,e):this}static is(t){return"object"===typeof t&&"number"===typeof t.height&&"number"===typeof t.width}static lift(t){return t instanceof D?t:new D(t.width,t.height)}static equals(t,e){return t===e||!(!t||!e)&&(t.width===e.width&&t.height===e.height)}}function N(t){let e=t.offsetParent,i=t.offsetTop,s=t.offsetLeft;while(null!==(t=t.parentNode)&&t!==document.body&&t!==document.documentElement){i-=t.scrollTop;const n=K(t)?null:T(t);n&&(s-="rtl"!==n.direction?t.scrollLeft:-t.scrollLeft),t===e&&(s+=S.getBorderLeftWidth(t),i+=S.getBorderTopWidth(t),i+=t.offsetTop,s+=t.offsetLeft,e=t.offsetParent)}return{left:s,top:i}}function A(t,e,i){"number"===typeof e&&(t.style.width=`${e}px`),"number"===typeof i&&(t.style.height=`${i}px`)}function O(t){const e=t.getBoundingClientRect();return{left:e.left+window.scrollX,top:e.top+window.scrollY,width:e.width,height:e.height}}function L(t){let e=t,i=1;do{const t=T(e).zoom;null!==t&&void 0!==t&&"1"!==t&&(i*=t),e=e.parentElement}while(null!==e&&e!==document.documentElement);return i}function R(t){const e=S.getMarginLeft(t)+S.getMarginRight(t);return t.offsetWidth+e}function I(t){const e=S.getBorderLeftWidth(t)+S.getBorderRightWidth(t),i=S.getPaddingLeft(t)+S.getPaddingRight(t);return t.offsetWidth-e-i}function M(t){const e=S.getBorderTopWidth(t)+S.getBorderBottomWidth(t),i=S.getPaddingTop(t)+S.getPaddingBottom(t);return t.offsetHeight-e-i}function P(t){const e=S.getMarginTop(t)+S.getMarginBottom(t);return t.offsetHeight+e}function B(t,e){while(t){if(t===e)return!0;t=t.parentNode}return!1}function F(t,e,i){while(t&&t.nodeType===t.ELEMENT_NODE){if(t.classList.contains(e))return t;if(i)if("string"===typeof i){if(t.classList.contains(i))return null}else if(t===i)return null;t=t.parentNode}return null}function H(t,e,i){return!!F(t,e,i)}function K(t){return t&&!!t.host&&!!t.mode}function W(t){return!!U(t)}function U(t){while(t.parentNode){if(t===document.body)return null;t=t.parentNode}return K(t)?t:null}function V(){let t=document.activeElement;while(null===t||void 0===t?void 0:t.shadowRoot)t=t.shadowRoot.activeElement;return t}function z(t=document.getElementsByTagName("head")[0],e){const i=document.createElement("style");return i.type="text/css",i.media="screen",null===e||void 0===e||e(i),t.appendChild(i),i}D.None=new D(0,0);let $=null;function Y(){return $||($=z()),$}function G(t){var e,i;return(null===(e=null===t||void 0===t?void 0:t.sheet)||void 0===e?void 0:e.rules)?t.sheet.rules:(null===(i=null===t||void 0===t?void 0:t.sheet)||void 0===i?void 0:i.cssRules)?t.sheet.cssRules:[]}function q(t,e,i=Y()){i&&e&&i.sheet.insertRule(t+"{"+e+"}",0)}function j(t,e=Y()){if(!e)return;const i=G(e),s=[];for(let n=0;n=0;n--)e.sheet.deleteRule(s[n])}function X(t){return"object"===typeof HTMLElement?t instanceof HTMLElement:t&&"object"===typeof t&&1===t.nodeType&&"string"===typeof t.nodeName}const Q={CLICK:"click",AUXCLICK:"auxclick",DBLCLICK:"dblclick",MOUSE_UP:"mouseup",MOUSE_DOWN:"mousedown",MOUSE_OVER:"mouseover",MOUSE_MOVE:"mousemove",MOUSE_OUT:"mouseout",MOUSE_ENTER:"mouseenter",MOUSE_LEAVE:"mouseleave",MOUSE_WHEEL:"wheel",POINTER_UP:"pointerup",POINTER_DOWN:"pointerdown",POINTER_MOVE:"pointermove",POINTER_LEAVE:"pointerleave",CONTEXT_MENU:"contextmenu",WHEEL:"wheel",KEY_DOWN:"keydown",KEY_PRESS:"keypress",KEY_UP:"keyup",LOAD:"load",BEFORE_UNLOAD:"beforeunload",UNLOAD:"unload",PAGE_SHOW:"pageshow",PAGE_HIDE:"pagehide",ABORT:"abort",ERROR:"error",RESIZE:"resize",SCROLL:"scroll",FULLSCREEN_CHANGE:"fullscreenchange",WK_FULLSCREEN_CHANGE:"webkitfullscreenchange",SELECT:"select",CHANGE:"change",SUBMIT:"submit",RESET:"reset",FOCUS:"focus",FOCUS_IN:"focusin",FOCUS_OUT:"focusout",BLUR:"blur",INPUT:"input",STORAGE:"storage",DRAG_START:"dragstart",DRAG:"drag",DRAG_ENTER:"dragenter",DRAG_LEAVE:"dragleave",DRAG_OVER:"dragover",DROP:"drop",DRAG_END:"dragend",ANIMATION_START:s.Pf?"webkitAnimationStart":"animationstart",ANIMATION_END:s.Pf?"webkitAnimationEnd":"animationend",ANIMATION_ITERATION:s.Pf?"webkitAnimationIteration":"animationiteration"};function Z(t){const e=t;return!(!e||"function"!==typeof e.preventDefault||"function"!==typeof e.stopPropagation)}const J={stop:(t,e)=>(t.preventDefault(),e&&t.stopPropagation(),t)};function tt(t){const e=[];for(let i=0;t&&t.nodeType===t.ELEMENT_NODE;i++)e[i]=t.scrollTop,t=t.parentNode;return e}function et(t,e){for(let i=0;t&&t.nodeType===t.ELEMENT_NODE;i++)t.scrollTop!==e[i]&&(t.scrollTop=e[i]),t=t.parentNode}class it extends d.JT{static hasFocusWithin(t){const e=U(t),i=e?e.activeElement:document.activeElement;return B(i,t)}constructor(t){super(),this._onDidFocus=this._register(new l.Q5),this.onDidFocus=this._onDidFocus.event,this._onDidBlur=this._register(new l.Q5),this.onDidBlur=this._onDidBlur.event;let e=it.hasFocusWithin(t),i=!1;const s=()=>{i=!1,e||(e=!0,this._onDidFocus.fire())},n=()=>{e&&(i=!0,window.setTimeout((()=>{i&&(i=!1,e=!1,this._onDidBlur.fire())}),0))};this._refreshStateHandler=()=>{const i=it.hasFocusWithin(t);i!==e&&(e?n():s())},this._register(f(t,Q.FOCUS,s,!0)),this._register(f(t,Q.BLUR,n,!0)),this._register(f(t,Q.FOCUS_IN,(()=>this._refreshStateHandler()))),this._register(f(t,Q.FOCUS_OUT,(()=>this._refreshStateHandler())))}}function st(t){return new it(t)}function nt(t,...e){if(t.append(...e),1===e.length&&"string"!==typeof e[0])return e[0]}function ot(t,e){return t.insertBefore(e,t.firstChild),e}function rt(t,...e){t.innerText="",nt(t,...e)}const at=/([\w\-]+)?(#([\w\-]+))?((\.([\w\-]+))*)/;var lt;function ht(t,e,i,...s){const n=at.exec(e);if(!n)throw new Error("Bad use of emmet");const o=n[1]||"div";let r;return r=t!==lt.HTML?document.createElementNS(t,o):document.createElement(o),n[3]&&(r.id=n[3]),n[4]&&(r.className=n[4].replace(/\./g," ").trim()),i&&Object.entries(i).forEach((([t,e])=>{"undefined"!==typeof e&&(/^on\w+$/.test(t)?r[t]=e:"selected"===t?e&&r.setAttribute(t,"true"):r.setAttribute(t,e))})),r.append(...s),r}function dt(t,e,...i){return ht(lt.HTML,t,e,...i)}function ct(t,...e){t?ut(...e):pt(...e)}function ut(...t){for(const e of t)e.style.display="",e.removeAttribute("aria-hidden")}function pt(...t){for(const e of t)e.style.display="none",e.setAttribute("aria-hidden","true")}function mt(t){const e=window.devicePixelRatio*t;return Math.max(1,Math.floor(e))/window.devicePixelRatio}function gt(t){window.open(t,"_blank","noopener")}function ft(t){const e=()=>{t(),i=C(e)};let i=C(e);return(0,d.OF)((()=>i.dispose()))}function vt(t){return t?`url('${c.Gi.uriToBrowserUri(t).toString(!0).replace(/'/g,"%27")}')`:"url('')"}function yt(t){return`'${t.replace(/'/g,"%27")}'`}function bt(t,e){if(void 0!==t){const i=t.match(/^\s*var\((.+)\)$/);if(i){const t=i[1].split(",",2);return 2===t.length&&(e=bt(t[1].trim(),e)),`var(${t[0]}, ${e})`}return t}return e}function wt(t,e=!1){const i=document.createElement("a");return h.v5("afterSanitizeAttributes",(s=>{for(const n of["href","src"])if(s.hasAttribute(n)){const o=s.getAttribute(n);if("href"===n&&o.startsWith("#"))continue;if(i.href=o,!t.includes(i.protocol.replace(/:$/,""))){if(e&&"src"===n&&i.href.startsWith("data:"))continue;s.removeAttribute(n)}}})),(0,d.OF)((()=>{h.ok("afterSanitizeAttributes")}))}(function(t){t["HTML"]="http://www.w3.org/1999/xhtml",t["SVG"]="http://www.w3.org/2000/svg"})(lt||(lt={})),dt.SVG=function(t,e,...i){return ht(lt.SVG,t,e,...i)},c.WX.setPreferredWebSchema(/^https:/.test(window.location.href)?"https":"http");const _t=Object.freeze(["a","abbr","b","bdo","blockquote","br","caption","cite","code","col","colgroup","dd","del","details","dfn","div","dl","dt","em","figcaption","figure","h1","h2","h3","h4","h5","h6","hr","i","img","ins","kbd","label","li","mark","ol","p","pre","q","rp","rt","ruby","samp","small","small","source","span","strike","strong","sub","summary","sup","table","tbody","td","tfoot","th","thead","time","tr","tt","u","ul","var","video","wbr"]);Object.freeze({ALLOWED_TAGS:["a","button","blockquote","code","div","h1","h2","h3","h4","h5","h6","hr","input","label","li","p","pre","select","small","span","strong","textarea","ul","ol"],ALLOWED_ATTR:["href","data-href","data-command","target","title","name","src","alt","class","id","role","tabindex","style","data-code","width","height","align","x-dispatch","required","checked","placeholder","type","start"],RETURN_DOM:!1,RETURN_DOM_FRAGMENT:!1,RETURN_TRUSTED_TYPE:!0});class xt extends l.Q5{constructor(){super(),this._subscriptions=new d.SL,this._keyStatus={altKey:!1,shiftKey:!1,ctrlKey:!1,metaKey:!1},this._subscriptions.add(f(window,"keydown",(t=>{if(t.defaultPrevented)return;const e=new o.y(t);if(6!==e.keyCode||!t.repeat){if(t.altKey&&!this._keyStatus.altKey)this._keyStatus.lastKeyPressed="alt";else if(t.ctrlKey&&!this._keyStatus.ctrlKey)this._keyStatus.lastKeyPressed="ctrl";else if(t.metaKey&&!this._keyStatus.metaKey)this._keyStatus.lastKeyPressed="meta";else if(t.shiftKey&&!this._keyStatus.shiftKey)this._keyStatus.lastKeyPressed="shift";else{if(6===e.keyCode)return;this._keyStatus.lastKeyPressed=void 0}this._keyStatus.altKey=t.altKey,this._keyStatus.ctrlKey=t.ctrlKey,this._keyStatus.metaKey=t.metaKey,this._keyStatus.shiftKey=t.shiftKey,this._keyStatus.lastKeyPressed&&(this._keyStatus.event=t,this.fire(this._keyStatus))}}),!0)),this._subscriptions.add(f(window,"keyup",(t=>{t.defaultPrevented||(!t.altKey&&this._keyStatus.altKey?this._keyStatus.lastKeyReleased="alt":!t.ctrlKey&&this._keyStatus.ctrlKey?this._keyStatus.lastKeyReleased="ctrl":!t.metaKey&&this._keyStatus.metaKey?this._keyStatus.lastKeyReleased="meta":!t.shiftKey&&this._keyStatus.shiftKey?this._keyStatus.lastKeyReleased="shift":this._keyStatus.lastKeyReleased=void 0,this._keyStatus.lastKeyPressed!==this._keyStatus.lastKeyReleased&&(this._keyStatus.lastKeyPressed=void 0),this._keyStatus.altKey=t.altKey,this._keyStatus.ctrlKey=t.ctrlKey,this._keyStatus.metaKey=t.metaKey,this._keyStatus.shiftKey=t.shiftKey,this._keyStatus.lastKeyReleased&&(this._keyStatus.event=t,this.fire(this._keyStatus)))}),!0)),this._subscriptions.add(f(document.body,"mousedown",(()=>{this._keyStatus.lastKeyPressed=void 0}),!0)),this._subscriptions.add(f(document.body,"mouseup",(()=>{this._keyStatus.lastKeyPressed=void 0}),!0)),this._subscriptions.add(f(document.body,"mousemove",(t=>{t.buttons&&(this._keyStatus.lastKeyPressed=void 0)}),!0)),this._subscriptions.add(f(window,"blur",(()=>{this.resetKeyStatus()})))}get keyStatus(){return this._keyStatus}resetKeyStatus(){this.doResetKeyStatus(),this.fire(this._keyStatus)}doResetKeyStatus(){this._keyStatus={altKey:!1,shiftKey:!1,ctrlKey:!1,metaKey:!1}}static getInstance(){return xt.instance||(xt.instance=new xt),xt.instance}dispose(){super.dispose(),this._subscriptions.dispose()}}class Ct extends d.JT{constructor(t,e){super(),this.element=t,this.callbacks=e,this.counter=0,this.dragStartTime=0,this.registerListeners()}registerListeners(){this._register(f(this.element,Q.DRAG_ENTER,(t=>{this.counter++,this.dragStartTime=t.timeStamp,this.callbacks.onDragEnter(t)}))),this._register(f(this.element,Q.DRAG_OVER,(t=>{var e,i;t.preventDefault(),null===(i=(e=this.callbacks).onDragOver)||void 0===i||i.call(e,t,t.timeStamp-this.dragStartTime)}))),this._register(f(this.element,Q.DRAG_LEAVE,(t=>{this.counter--,0===this.counter&&(this.dragStartTime=0,this.callbacks.onDragLeave(t))}))),this._register(f(this.element,Q.DRAG_END,(t=>{this.counter=0,this.dragStartTime=0,this.callbacks.onDragEnd(t)}))),this._register(f(this.element,Q.DROP,(t=>{this.counter=0,this.dragStartTime=0,this.callbacks.onDrop(t)})))}}const Et=/(?[\w\-]+)?(?:#(?[\w\-]+))?(?(?:\.(?:[\w\-]+))*)(?:@(?(?:[\w\_])+))?/;function Tt(t,...e){let i,s;Array.isArray(e[0])?(i={},s=e[0]):(i=e[0]||{},s=e[1]);const n=Et.exec(t);if(!n||!n.groups)throw new Error("Bad use of h");const o=n.groups["tag"]||"div",r=document.createElement(o);n.groups["id"]&&(r.id=n.groups["id"]);const a=[];if(n.groups["class"])for(const h of n.groups["class"].split("."))""!==h&&a.push(h);if(void 0!==i.className)for(const h of i.className.split("."))""!==h&&a.push(h);a.length>0&&(r.className=a.join(" "));const l={};if(n.groups["name"]&&(l[n.groups["name"]]=r),s)for(const h of s)h instanceof HTMLElement?r.appendChild(h):"string"===typeof h?r.append(h):"root"in h&&(Object.assign(l,h),r.appendChild(h.root));for(const[h,d]of Object.entries(i))if("className"!==h)if("style"===h)for(const[t,e]of Object.entries(d))r.style.setProperty(kt(t),"number"===typeof e?e+"px":""+e);else"tabIndex"===h?r.tabIndex=d:r.setAttribute(kt(h),d.toString());return l["root"]=r,l}function kt(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}},29739:(t,e,i)=>{ +/*! @license DOMPurify 2.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.1/LICENSE */ +function s(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);ett,ok:()=>it,v5:()=>et});var n=Object.hasOwnProperty,o=Object.setPrototypeOf,r=Object.isFrozen,a=Object.getPrototypeOf,l=Object.getOwnPropertyDescriptor,h=Object.freeze,d=Object.seal,c=Object.create,u="undefined"!==typeof Reflect&&Reflect,p=u.apply,m=u.construct;p||(p=function(t,e,i){return t.apply(e,i)}),h||(h=function(t){return t}),d||(d=function(t){return t}),m||(m=function(t,e){return new(Function.prototype.bind.apply(t,[null].concat(s(e))))});var g=T(Array.prototype.forEach),f=T(Array.prototype.pop),v=T(Array.prototype.push),y=T(String.prototype.toLowerCase),b=T(String.prototype.match),w=T(String.prototype.replace),_=T(String.prototype.indexOf),x=T(String.prototype.trim),C=T(RegExp.prototype.test),E=k(TypeError);function T(t){return function(e){for(var i=arguments.length,s=Array(i>1?i-1:0),n=1;n/gm),V=d(/^data-[\-\w.\u00B7-\uFFFF]/),z=d(/^aria-[\-\w]+$/),$=d(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Y=d(/^(?:\w+script|data):/i),G=d(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),q="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function j(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e0&&void 0!==arguments[0]?arguments[0]:X(),e=function(t){return Z(t)};if(e.version="2.3.1",e.removed=[],!t||!t.document||9!==t.document.nodeType)return e.isSupported=!1,e;var i=t.document,s=t.document,n=t.DocumentFragment,o=t.HTMLTemplateElement,r=t.Node,a=t.Element,l=t.NodeFilter,d=t.NamedNodeMap,c=void 0===d?t.NamedNodeMap||t.MozNamedAttrMap:d,u=t.Text,p=t.Comment,m=t.DOMParser,T=t.trustedTypes,k=a.prototype,J=N(k,"cloneNode"),tt=N(k,"nextSibling"),et=N(k,"childNodes"),it=N(k,"parentNode");if("function"===typeof o){var st=s.createElement("template");st.content&&st.content.ownerDocument&&(s=st.content.ownerDocument)}var nt=Q(T,i),ot=nt&&Bt?nt.createHTML(""):"",rt=s,at=rt.implementation,lt=rt.createNodeIterator,ht=rt.createDocumentFragment,dt=rt.getElementsByTagName,ct=i.importNode,ut={};try{ut=D(s).documentMode?s.documentMode:{}}catch(ye){}var pt={};e.isSupported="function"===typeof it&&at&&"undefined"!==typeof at.createHTMLDocument&&9!==ut;var mt=W,gt=U,ft=V,vt=z,yt=Y,bt=G,wt=$,_t=null,xt=S({},[].concat(j(A),j(O),j(L),j(I),j(P))),Ct=null,Et=S({},[].concat(j(B),j(F),j(H),j(K))),Tt=null,kt=null,St=!0,Dt=!0,Nt=!1,At=!1,Ot=!1,Lt=!1,Rt=!1,It=!1,Mt=!1,Pt=!0,Bt=!1,Ft=!0,Ht=!0,Kt=!1,Wt={},Ut=null,Vt=S({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),zt=null,$t=S({},["audio","video","img","source","image","track"]),Yt=null,Gt=S({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),qt="http://www.w3.org/1998/Math/MathML",jt="http://www.w3.org/2000/svg",Xt="http://www.w3.org/1999/xhtml",Qt=Xt,Zt=!1,Jt=null,te=s.createElement("form"),ee=function(t){Jt&&Jt===t||(t&&"object"===("undefined"===typeof t?"undefined":q(t))||(t={}),t=D(t),_t="ALLOWED_TAGS"in t?S({},t.ALLOWED_TAGS):xt,Ct="ALLOWED_ATTR"in t?S({},t.ALLOWED_ATTR):Et,Yt="ADD_URI_SAFE_ATTR"in t?S(D(Gt),t.ADD_URI_SAFE_ATTR):Gt,zt="ADD_DATA_URI_TAGS"in t?S(D($t),t.ADD_DATA_URI_TAGS):$t,Ut="FORBID_CONTENTS"in t?S({},t.FORBID_CONTENTS):Vt,Tt="FORBID_TAGS"in t?S({},t.FORBID_TAGS):{},kt="FORBID_ATTR"in t?S({},t.FORBID_ATTR):{},Wt="USE_PROFILES"in t&&t.USE_PROFILES,St=!1!==t.ALLOW_ARIA_ATTR,Dt=!1!==t.ALLOW_DATA_ATTR,Nt=t.ALLOW_UNKNOWN_PROTOCOLS||!1,At=t.SAFE_FOR_TEMPLATES||!1,Ot=t.WHOLE_DOCUMENT||!1,It=t.RETURN_DOM||!1,Mt=t.RETURN_DOM_FRAGMENT||!1,Pt=!1!==t.RETURN_DOM_IMPORT,Bt=t.RETURN_TRUSTED_TYPE||!1,Rt=t.FORCE_BODY||!1,Ft=!1!==t.SANITIZE_DOM,Ht=!1!==t.KEEP_CONTENT,Kt=t.IN_PLACE||!1,wt=t.ALLOWED_URI_REGEXP||wt,Qt=t.NAMESPACE||Xt,At&&(Dt=!1),Mt&&(It=!0),Wt&&(_t=S({},[].concat(j(P))),Ct=[],!0===Wt.html&&(S(_t,A),S(Ct,B)),!0===Wt.svg&&(S(_t,O),S(Ct,F),S(Ct,K)),!0===Wt.svgFilters&&(S(_t,L),S(Ct,F),S(Ct,K)),!0===Wt.mathMl&&(S(_t,I),S(Ct,H),S(Ct,K))),t.ADD_TAGS&&(_t===xt&&(_t=D(_t)),S(_t,t.ADD_TAGS)),t.ADD_ATTR&&(Ct===Et&&(Ct=D(Ct)),S(Ct,t.ADD_ATTR)),t.ADD_URI_SAFE_ATTR&&S(Yt,t.ADD_URI_SAFE_ATTR),t.FORBID_CONTENTS&&(Ut===Vt&&(Ut=D(Ut)),S(Ut,t.FORBID_CONTENTS)),Ht&&(_t["#text"]=!0),Ot&&S(_t,["html","head","body"]),_t.table&&(S(_t,["tbody"]),delete Tt.tbody),h&&h(t),Jt=t)},ie=S({},["mi","mo","mn","ms","mtext"]),se=S({},["foreignobject","desc","title","annotation-xml"]),ne=S({},O);S(ne,L),S(ne,R);var oe=S({},I);S(oe,M);var re=function(t){var e=it(t);e&&e.tagName||(e={namespaceURI:Xt,tagName:"template"});var i=y(t.tagName),s=y(e.tagName);if(t.namespaceURI===jt)return e.namespaceURI===Xt?"svg"===i:e.namespaceURI===qt?"svg"===i&&("annotation-xml"===s||ie[s]):Boolean(ne[i]);if(t.namespaceURI===qt)return e.namespaceURI===Xt?"math"===i:e.namespaceURI===jt?"math"===i&&se[s]:Boolean(oe[i]);if(t.namespaceURI===Xt){if(e.namespaceURI===jt&&!se[s])return!1;if(e.namespaceURI===qt&&!ie[s])return!1;var n=S({},["title","style","font","a","script"]);return!oe[i]&&(n[i]||!ne[i])}return!1},ae=function(t){v(e.removed,{element:t});try{t.parentNode.removeChild(t)}catch(ye){try{t.outerHTML=ot}catch(ye){t.remove()}}},le=function(t,i){try{v(e.removed,{attribute:i.getAttributeNode(t),from:i})}catch(ye){v(e.removed,{attribute:null,from:i})}if(i.removeAttribute(t),"is"===t&&!Ct[t])if(It||Mt)try{ae(i)}catch(ye){}else try{i.setAttribute(t,"")}catch(ye){}},he=function(t){var e=void 0,i=void 0;if(Rt)t=""+t;else{var n=b(t,/^[\r\n\t ]+/);i=n&&n[0]}var o=nt?nt.createHTML(t):t;if(Qt===Xt)try{e=(new m).parseFromString(o,"text/html")}catch(ye){}if(!e||!e.documentElement){e=at.createDocument(Qt,"template",null);try{e.documentElement.innerHTML=Zt?"":o}catch(ye){}}var r=e.body||e.documentElement;return t&&i&&r.insertBefore(s.createTextNode(i),r.childNodes[0]||null),Qt===Xt?dt.call(e,Ot?"html":"body")[0]:Ot?e.documentElement:r},de=function(t){return lt.call(t.ownerDocument||t,t,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT,null,!1)},ce=function(t){return!(t instanceof u||t instanceof p)&&!("string"===typeof t.nodeName&&"string"===typeof t.textContent&&"function"===typeof t.removeChild&&t.attributes instanceof c&&"function"===typeof t.removeAttribute&&"function"===typeof t.setAttribute&&"string"===typeof t.namespaceURI&&"function"===typeof t.insertBefore)},ue=function(t){return"object"===("undefined"===typeof r?"undefined":q(r))?t instanceof r:t&&"object"===("undefined"===typeof t?"undefined":q(t))&&"number"===typeof t.nodeType&&"string"===typeof t.nodeName},pe=function(t,i,s){pt[t]&&g(pt[t],(function(t){t.call(e,i,s,Jt)}))},me=function(t){var i=void 0;if(pe("beforeSanitizeElements",t,null),ce(t))return ae(t),!0;if(b(t.nodeName,/[\u0080-\uFFFF]/))return ae(t),!0;var s=y(t.nodeName);if(pe("uponSanitizeElement",t,{tagName:s,allowedTags:_t}),!ue(t.firstElementChild)&&(!ue(t.content)||!ue(t.content.firstElementChild))&&C(/<[/\w]/g,t.innerHTML)&&C(/<[/\w]/g,t.textContent))return ae(t),!0;if("select"===s&&C(/